openpyxl格式单元格

2024-05-17 15:09:00 发布

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

我正在尝试设置单元格格式以显示2个小数,我需要它显示2个小数,不知怎的,当我使用不同的office应用程序打开时,它会给出混合的结果,我对openpyxl(使用最新的2.5.1)还不熟悉,我已经浏览了文档,设置格式似乎很直接

我所做的设置格式是:

ws.column_dimensions['F'].number_format = '#,##0.00'
ws.column_dimensions['G'].number_format = '#,##0.00'

不太确定我错过了吗?

对于所附的图片,它显示Open Office和Libre Office能够显示我需要的两个小数,WPS和MS-Excel不能显示两个小数,快速检查以上所有格式单元格(通过右键单击该单元格),openoffice和Libre Office是数字格式,WPS和MS-Excel是通用格式

注意:我试过设置更多的小数,例如:3个或更多的小数,仍然打开Office和Libre显示指定的小数没有问题,但是WPS和MS Excel没有

enter image description here


Tags: 应用程序formatnumberws格式columnexcelms
3条回答

我找到了一个解决方法,我需要手动设置每个单元格的格式,将其设置为两位小数,当使用WPS和MS-Excel打开时,这个方法似乎有效

for row in range(1, rows):
    ws["F{}".format(row)].number_format = '#,##0.00'
    ws["F{}".format(row)].number_format = '#,##0.00'

您可以使用python中的round()函数在excel中将图形写入单元格之前将其舍入。我建议将excel中的列添加到列表中,然后使用for循环遍历列表

for i in list:
    round(i, 2) #Rounds each element of the list to two decimal places

希望这有帮助

做了建议后,我还是没用。 似乎MS-Excel仍然将单元格值视为字符串。

因此,我尝试在格式化之前手动转换每个单元格:

for row in range(1, rows):
    ws["F{}".format(row)].value = float(ws["F{}".format(row)].value)
    ws["F{}".format(row)].number_format = '#,##0.00'

很高兴,成功了。我使用的是Python2.7.6。MS Excel版本1808 64位。

相关问题 更多 >