pandas 从Python创建MS Excel文件(xlsx)的最安全方法

tnkciper  于 2022-11-05  发布在  Python
关注(0)|答案(1)|浏览(168)

我知道Microsoft Excel在打开任意电子表格时有一些明显的限制。偶尔会出现以下错误/警告:
我们发现“filename.xlsx”中的某些内容存在问题。是否希望我们尝试尽可能多地进行恢复?如果您信任此工作簿的来源,请单击“是”。
在文件“filename.xlsx”中检测到错误。Excel已完成文件级验证和修复。此工作簿的某些部分可能已修复或丢弃
Google Sheets、LibreOffice和Apple Numbers的可靠性要高得多,但我的一些最终用户更喜欢使用Excel,他们需要能够信任我为他们制作的电子表格中的数据。
这些电子表格具有多个工作表,并由类似以下内容的代码生成:

with pd.ExcelWriter(f"{filename}.xlsx") as writer:
  for sheet in sheets:
    data = pd.DataFrame(...)
    data.to_excel(writer, sheet_name=f"{sheet}")
  writer.save()

我以前修复了一个长工作表名称的问题(因为MS有31个字符的限制),错误消失了,但最近错误又开始出现,代码或数据内容没有明显的变化。
我深入查看了Excel XML目录,看看是否缺少了什么,但我所能确定的只是一些细微的格式差异(例如,默认字体或列宽),以及XML架构的差异--保存“恢复”的工作簿后,电子表格的内容基本上是相同的。也就是说,我宁愿不告诉这些最终用户“别担心,数据 * 可能 * 很好”。
这就引出了我的问题:从Python生成Excel文件的最安全的方法是什么?理想情况下,我设想电子表格编写器默认使用MS Excel约束,因此在创建文件时,任何潜在的错误或警告都会在运行时生成。有没有更好的是否有一种方法可以确保Pandas以这样一种方式生成一个工作表,即最后-用户可以避免这些错误并对文件内容有信心吗?

c0vxltue

c0vxltue1#

通过更多的研究,我了解到Pandas将默认的编写器设置为openpyxl***,除非安装了XlsxWriter***。
运行pip install XlsxWriter后,它开始在Excel中生成一个电子表格,没有错误。
也许值得注意的是,为了子孙后代的缘故,这个问题在从python3.6升级到python3.7后立即出现。

相关问题