2

我正在使用 pandas 将数据导出到 XLSX,而后者又使用XlsxWriter. 我已经尝试了我发现的格式选项(例如float_format,尽管事实上它似乎是基于源的错误答案),但我找不到任何阻止 Excel 以科学计数法解释数字的东西。

例如,如果我写0.000000000001,Excel 中的基础单元格值为0.000000000001,但显示值为1E-12。我知道我可以将数字写为字符串,但我希望 Excel 中的值是数字。

4

3 回答 3

4

您不能阻止 Excel 以它认为合适的任何格式显示未格式化的数字。保证格式的唯一方法是为数据指定数字格式。

不幸的是,目前在 XlsxWriter 和或因此在 Pandas 中没有办法做到这一点。

诸如此类的功能在TODO 列表中,但它可能暂时不可用。

作为一种解决方法,我建议获取对基础工作簿和工作表的引用,并覆盖您希望使用来自 Pandas 数据框和 XlsxWriter 格式的相同数据进行格式化的任何单元格。我稍后会更新一个如何做到这一点的例子。

免责声明:我编写了 XlsxWriter 和 Pandas/XlsxWriter 集成代码。这里的问题实际上与 XlsxWriter 限制有关,而不是 Pandas。

于 2014-06-06T08:30:32.310 回答
1

您可以设置数字的长度,然后使用如下代码:

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()
于 2018-09-14T19:39:01.293 回答
0

只需在 write() 方法中指定时格式化数字。例如:

import xlsxwriter

wb = xlsxwriter.Workbook('myfile.xlsx')
ws = wb.add_worksheet('testme')
ws.write('A1', '%s' %123232323232323232435454546565)
wb.close()
于 2018-09-07T20:51:55.737 回答