使用openpyxl格式化xlsx(数字格式,调整文本并缩小文本)

2024-06-16 13:32:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用openpyxl(不要使用其他libs)编辑xlsx,代码如下:

from openpyxl import Workbook
book = Workbook()
sheet = book.active
rows = [['name', 'This is number1', 'This is number2', 'longstr'],
['a', 312318.231, -2312.2, 'aaaaaaaaaaaa\naaaaaaaaaaaa\naaaaaaaaaaaa'],
['a', 312318.231, -2312.2, 'aaaaaaaaaaaa\naaaaaaaaaaaa\naaaaaaaaaaaa']
]
for row in rows:
    sheet.append(row)
book.save('text.xlsx')

结果如下:

enter image description here

我想要的是

  1. 用逗号样式(千位分隔符)格式化第2、3列中的数字,并且不减少为小数。我在代码中使用了"{:,.0f}".format(),但是xlsx中的输出变成了一个字符串。

  2. 让单元格与第1、2、3列的文本相匹配

  3. 缩小文本以适合第4列的单元格(不是标题)。在excel中,操作是 Format Cells -> Alignment -> Shrink to fit

enter image description here

上面是一个简化的示例,在实际情况中,我们有数千行和已知的列数(比如4列)。在

我刚开始使用openpyxl,你能帮我实现我的目标吗?在


Tags: 代码文本编辑isthisxlsxlibssheet
1条回答
网友
1楼 · 发布于 2024-06-16 13:32:24

列格式

要控制Excel中的数字显示格式,请按如下方式设置单元格属性:

cell.number_format = "0.0000" # 4 decimal places

列宽

设置宽度类似,但作为列属性:

^{pr2}$

不幸的是,您需要手动计算宽度,并且没有好的方法来实现这一点。我发现an example on the web列出了Calibri 11字体的所有宽度度量(Excel中的默认值)。你可以看看列宽是如何计算的。在

相关问题 更多 >