【发布时间】:2020-03-04 10:44:54
【问题描述】:
在我的项目中,我创建 .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')。
更新: 试过这个
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
结果。边界分布在某种程度上并不均匀。有些行很短,有些行很长,看起来并不令人满意。除此之外,有些单元格没有边框或根本没有边框。
【问题讨论】:
-
您能添加一些您尝试过的代码吗?
-
@Delena Malan 更新