首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >openpyxl使用小数格式化单元格

openpyxl使用小数格式化单元格
EN

Stack Overflow用户
提问于 2018-03-28 11:21:25
回答 3查看 14.2K关注 0票数 4

我正在尝试设置单元格格式以显示2个小数,我需要它显示2个小数,不知何故,当我使用不同的办公应用程序打开时,它给出了不同的结果,我是新的openpyxl (使用最新的2.5.1),我已经阅读了文档,设置格式看起来非常简单

我所做的设置格式是:-

代码语言:javascript
复制
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没有

EN

回答 3

Stack Overflow用户

发布于 2018-03-28 13:44:18

我发现了一个解决办法,我需要手动设置每个单元格的格式为两个小数,似乎工作时使用WPS和MS Excel打开

代码语言:javascript
复制
for row in range(1, rows):
    ws["F{}".format(row)].number_format = '#,##0.00'
    ws["G{}".format(row)].number_format = '#,##0.00'
票数 5
EN

Stack Overflow用户

发布于 2019-05-18 18:00:01

在做了建议之后,它仍然对我不起作用。似乎MS Excel仍然将单元格值视为字符串。

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

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2019-07-12 15:56:56

您可以使用python中的round()函数对其中的数字进行舍入,然后将它们写入excel中的单元格。我建议将excel中的列添加到列表中,然后使用for循环遍历列表。

代码语言:javascript
复制
for i in list:
    round(i, 2) #Rounds each element of the list to two decimal places

希望这能有所帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49525545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档