在openpyxl中格式化Excel文件

问题描述 投票:0回答:1

在我的项目中,我创建.xlsx文件,并使用ws.append([list])填充数据。像这样:

for line in inf:
    current_line = line.strip().split(';')
    ws.append(current_line)

标题行也使用.append()方法添加。

我接下来要做的是将一种样式应用于标题行(粗体),将另一种样式应用于整个表(每个单元格应具有简单的边框)。

我尝试了不同的方法(主要是在openpyxl.readthedocs.io和Googled上进行此操作,但没有一个对我有用。

是否可以为第一行应用样式,并为文件中所有现有单元格应用边框?困难在于我每行有不同数量的列,而行的数量却未知(很多)。边框应相应地应用于最长行的宽度,如图所示。

enter image description here

我尝试过的一些方法:

col = ws.column_dimensions['A']
col.border =  = Border(left=Side(border_style='thin', color='FF000000'),
             right=Side(border_style='thin', color='FF000000'),
             top=Side(border_style='thin', color='FF000000'),
             bottom=Side(border_style='thin', color='FF000000')
    )

row = ws.row_dimensions[1]
row.border =  = Border(left=Side(border_style='thin', color='FF000000'),
             right=Side(border_style='thin', color='FF000000'),
             top=Side(border_style='thin', color='FF000000'),
             bottom=Side(border_style='thin', color='FF000000')
    )

这些甚至不适用于单行/列(1 /'A')。

python openpyxl xlsx xls
1个回答
0
投票

我假设您正在尝试将单元格样式应用于类型,而不是类型。

下面是在假定条件下使用openpyxl添加样式的代码段:

  • current_line:某物清单。
  • 标题仅是第1行。
  • version:Python 3.8.1

    从openpyxl导入load_workbook从openpyxl.styles导入边框,侧面,字体

    wb = load_workbook(filename =“ sample.xlsx”,read_only = False)ws = wb.active

    数据= [[“ H1”,“ H2”,“ H3”,“ H4”,“ H5”,“ H6”],[1,2,3,4,5,6,7],[11, 12,13],[21,22,23,24,25,26,27],[31,32],[41,42,43,44,45],[51,52]]

    cell_border =边框(left = Side(border_style ='thin',color ='FF000000'),right = Side(border_style ='thin',color ='FF000000'),top = Side(border_style ='thin',color ='FF000000'),bottom = Side(border_style ='thin',color ='FF000000'))

    n_rows = len(数据)对于范围(1,n_rows + 1)中的行:n_cols = len(数据[行-1])ws.append(data [row-1])对于位于范围(1,n_cols + 1)中的col:cell = ws.cell(row,col)cell.border = cell_border如果行== 1:#标题样式cell.font =字体(粗体= True)wb.save(“ sample.xlsx”)

您可以进行修改以满足您的确切要求。希望对您有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.