如何使用XlsxWriter防止Excel以科学计数法显示数字?

3 投票
3 回答
3136 浏览
提问于 2025-04-18 08:49

我正在使用pandas把数据导出到XLSX格式,而pandas又是通过XlsxWriter来实现的。我尝试了很多格式设置的选项,比如float_format,虽然根据资料来看这可能不是正确的做法,但我还是找不到能阻止Excel把数字显示成科学计数法的方法。

举个例子,如果我写0.000000000001,在Excel中这个单元格的实际值是0.000000000001,但是显示的值却是1E-12。我知道我可以把这个数字写成字符串,但我希望在Excel中它的值是数字类型。

3 个回答

0

只需要在你使用write()方法的时候格式化这个数字就可以了。例如:

import xlsxwriter

wb = xlsxwriter.Workbook('myfile.xlsx')
ws = wb.add_worksheet('testme')
ws.write('A1', '%s' %123232323232323232435454546565)
wb.close()
2

你可以先设置数字的长度,然后使用下面这样的代码:

import xlsxwriter

wb = xlsxwriter.Workbook('Test.xlsx')
ws = wb.add_worksheet('Num')

cell_format = wb.add_format({'num_format': '0.00000000000000'})
ws.write('A1', 0.000000000001, cell_format)

wb.close()
4

你无法阻止Excel以它认为合适的格式显示未格式化的数字。要确保数据以特定格式显示,唯一的方法就是为数据指定一个数字格式。

不过,目前在XlsxWriter中没有办法做到这一点,因此在Pandas中也无法实现。

这个功能在待办事项列表上,但可能要过一段时间才能实现。

作为一种解决方法,我建议你获取底层工作簿和工作表的引用,然后用Pandas数据框中的相同数据和XlsxWriter格式覆盖你希望格式化的单元格。稍后我会更新一个示例,教你怎么做。

免责声明:我是XlsxWriter的作者,也写了Pandas和XlsxWriter的集成代码。这里的问题主要是XlsxWriter的限制,而不是Pandas的问题。

撰写回答