我正在使用 pandas 将数据导出到 XLSX,而后者又使用XlsxWriter
. 我已经尝试了我发现的格式选项(例如float_format
,尽管事实上它似乎是基于源的错误答案),但我找不到任何阻止 Excel 以科学计数法解释数字的东西。
例如,如果我写0.000000000001
,Excel 中的基础单元格值为0.000000000001
,但显示值为1E-12
。我知道我可以将数字写为字符串,但我希望 Excel 中的值是数字。
我正在使用 pandas 将数据导出到 XLSX,而后者又使用XlsxWriter
. 我已经尝试了我发现的格式选项(例如float_format
,尽管事实上它似乎是基于源的错误答案),但我找不到任何阻止 Excel 以科学计数法解释数字的东西。
例如,如果我写0.000000000001
,Excel 中的基础单元格值为0.000000000001
,但显示值为1E-12
。我知道我可以将数字写为字符串,但我希望 Excel 中的值是数字。
您不能阻止 Excel 以它认为合适的任何格式显示未格式化的数字。保证格式的唯一方法是为数据指定数字格式。
不幸的是,目前在 XlsxWriter 和或因此在 Pandas 中没有办法做到这一点。
诸如此类的功能在TODO 列表中,但它可能暂时不可用。
作为一种解决方法,我建议获取对基础工作簿和工作表的引用,并覆盖您希望使用来自 Pandas 数据框和 XlsxWriter 格式的相同数据进行格式化的任何单元格。我稍后会更新一个如何做到这一点的例子。
免责声明:我编写了 XlsxWriter 和 Pandas/XlsxWriter 集成代码。这里的问题实际上与 XlsxWriter 限制有关,而不是 Pandas。
您可以设置数字的长度,然后使用如下代码:
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()
只需在 write() 方法中指定时格式化数字。例如:
import xlsxwriter
wb = xlsxwriter.Workbook('myfile.xlsx')
ws = wb.add_worksheet('testme')
ws.write('A1', '%s' %123232323232323232435454546565)
wb.close()