在我的项目中,我创建了.xlsx文件,并使用ws.append([list])用数据填充它。就像这样:
for line in inf:
current_line = line.strip().split(';')
ws.append(current_line)
标题行也是使用.append()方法添加的
我需要做的下一件事是为标题行应用一种样式(粗体字体),为整个表格应用另一种样式(每个单元格应该有简单的边框)
我尝试过不同的方法(主要是在openpyxl.readthedocs.io和Googled上),但没有一种对我有效
是否有方法为第一行应用样式,并为文件中的所有现有单元格应用边框?困难在于我在每一行中有不同数量的列,而行的数量未知(很多)。边框应相应地应用于最长行的宽度,如图中所示
我尝试过的一些方法:
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')
UPD: 试过这个
row = 1
for line in inf:
curr_line = line.strip().split(';')
n_cols = len(curr_line)
ws.append(curr_line)
for col in range(1, n_cols + 1):
cell = ws.cell(row, col)
cell.border = cell_border
if row == 1: # Header Style
cell.font = Font(bold=True)
row += 1
结果呢。边界分布在某种程度上并不均匀。有些行很短,有些行很长,看起来并不令人满意。除此之外,有些细胞没有边界或根本没有边界。
我假设您正在尝试将单元格样式应用于“列表”类型,而不是“openpyxl.Cell.Cell.Cell”类型
下面是在假设条件下使用openpyxl添加样式的代码段:
您可以修改以满足您的确切要求。 希望能有帮助
更新:
有关openpyxl单元格格式here的更多详细信息
相关问题 更多 >
编程相关推荐