我正在尝试设置单元格格式以显示2个小数,我需要它显示2个小数,不知何故,当我使用不同的办公应用程序打开时,它给出了不同的结果,我是新的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无法显示两个小数,快速检查所有上述格式的单元格(通过右键单击该单元格),Open Office和Libre Office是数字格式,不知何故WPS和MS Excel是通用格式
注意:我已经尝试设置更多的小数,例如:3个或更多的小数,仍然打开Office和Libre显示指定的小数没有问题,但WPS和MS Excel没有

发布于 2018-03-28 13:44:18
我发现了一个解决办法,我需要手动设置每个单元格的格式为两个小数,似乎工作时使用WPS和MS Excel打开
for row in range(1, rows):
ws["F{}".format(row)].number_format = '#,##0.00'
ws["G{}".format(row)].number_format = '#,##0.00'发布于 2019-05-18 18:00:01
在做了建议之后,它仍然对我不起作用。似乎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'令人欣慰的是,它成功了。我使用的是Python 2.7.6。MS Excel版本1808 64位。
发布于 2019-07-12 15:56:56
您可以使用python中的round()函数对其中的数字进行舍入,然后将它们写入excel中的单元格。我建议将excel中的列添加到列表中,然后使用for循环遍历列表。
for i in list:
round(i, 2) #Rounds each element of the list to two decimal places希望这能有所帮助
https://stackoverflow.com/questions/49525545
复制相似问题