我想设置单元格格式显示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位小数或更多,仍然Open Office和Libre显示指定的小数而没有问题,但WPS和MS Excel不
答案 0 :(得分:2)
我找到了一个解决方法,我需要手动设置每个单元格以将其格式化为两位小数,在使用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'
答案 1 :(得分:0)
完成建议后,它仍然对我不起作用。 似乎MS Excel仍将单元格值视为String。
因此,我尝试在格式化之前对每个单元格进行手动转换:
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位。
答案 2 :(得分:0)
您可以在python中使用round()函数将图形四舍五入,然后再将其写入Excel中的单元格中。我建议将excel中的列添加到列表中,然后使用for循环
遍历列表for i in list:
round(i, 2) #Rounds each element of the list to two decimal places
希望这会有所帮助