【问题标题】:How can I stop Excel from displaying numbers in scientific notation using XlsxWriter?如何阻止 Excel 使用 XlsxWriter 以科学计数法显示数字?
【发布时间】:2018-10-11 20:25:28
【问题描述】:

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

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

【问题讨论】:

  • 你需要将excel中的单元格格式更改为分数
  • 我在问如何使用 pandas/XlsxWriter 本身更改格式,或者它是不可能的。通过与我的一位同事的对话,我的理解是其他语言的库支持这一点。理想情况下,用户根本不应该看到科学记数法,而是在打开文件后进行手动更改。

标签: python pandas xlsxwriter


【解决方案1】:

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

不幸的是,目前无法在 XlsxWriter 中或因此在 Pandas 中执行此操作。

TODO list 上有这样的功能,但它可能暂时无法使用。

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

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

【讨论】:

  • 谢谢!这是我需要的确认。我不太明白您提出的解决方法,所以我会等到您提供示例后再接受您的回答。
【解决方案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()

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-11
      • 1970-01-01
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多