Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何阻止Excel使用XlsxWriter以科学记数法显示数字?_Python_Pandas_Xlsxwriter - Fatal编程技术网

Python 如何阻止Excel使用XlsxWriter以科学记数法显示数字?

Python 如何阻止Excel使用XlsxWriter以科学记数法显示数字?,python,pandas,xlsxwriter,Python,Pandas,Xlsxwriter,我使用pandas将数据导出到XLSX,pandas反过来使用XlsxWriter。我已经尝试过我找到的格式选项(例如,float\u格式,尽管根据来源,它似乎是错误的答案),但我找不到任何阻止Excel用科学记数法解释数字的东西 例如,如果我写入0.000000000001,Excel中的基础单元格值为0.000000000001,但显示值为1E-12。我知道我可以将数字写成字符串,但我希望Excel中的值是数字。您不能阻止Excel以其认为合适的任何格式显示未格式化的数字。保证格式的唯一方法

我使用pandas将数据导出到XLSX,pandas反过来使用
XlsxWriter
。我已经尝试过我找到的格式选项(例如,
float\u格式
,尽管根据来源,它似乎是错误的答案),但我找不到任何阻止Excel用科学记数法解释数字的东西


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

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

不幸的是,目前在XlsxWriter中无法做到这一点,因此,在熊猫中也无法做到这一点

类似这样的功能已在上,但可能在一段时间内无法使用

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


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

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

import xlsxwriter

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

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

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()

你需要更改excel中的单元格格式,我想问的是如何使用pandas/XlsxWriter本身更改格式,或者这是不可能的。通过与我的一位同事的对话,我的理解是其他语言的库支持这一点。理想情况下,用户根本不应该看到科学符号,而应该在打开文件后进行手动更改。谢谢!这是我需要的确认。我不太明白你提出的解决方法,所以我会等到你提供了示例后才接受你的答案。