openpyxl格式化带小数的单元格

时间:2018-03-28 03:21:25

标签: python python-2.7 openpyxl

我想设置单元格格式显示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不

enter image description here

3 个答案:

答案 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

希望这会有所帮助