【发布时间】:2016-04-11 12:39:12
【问题描述】:
我使用 python 模块 Xlsxwriter 创建了一个 .xlsx 文件。
效果很好,但是当我运行时,任何包含公式的单元格都会显示为空或 0
unoconv -f pdf spreadsheet.xlsx
如何强制 unoconv 在转换为 pdf 之前自动计算值?
【问题讨论】:
标签: python excel pdf libreoffice unoconv
我使用 python 模块 Xlsxwriter 创建了一个 .xlsx 文件。
效果很好,但是当我运行时,任何包含公式的单元格都会显示为空或 0
unoconv -f pdf spreadsheet.xlsx
如何强制 unoconv 在转换为 pdf 之前自动计算值?
【问题讨论】:
标签: python excel pdf libreoffice unoconv
在撰写本文时,显然 unoconv 故意不进行任何重新计算,因为它可能会导致错误。见Issue 97。 unoconv的源码相关部分被注释掉了。
因此,您可以尝试的一件事是进入您的 unoconv 副本并取消注释这些行(使它们再次处于活动状态)。您可能会遇到错误,或者您可能会没事。
如果您的公式很简单,您可以尝试的另一件事是使用 Python 计算它们并使用 XlsxWriter 将结果与公式一起写入。请注意,worksheet.write_formula() method 有一个可选的value 参数。引用官方文档:
XlsxWriter 不计算公式的结果,而是将值 0 存储为公式结果。然后它在 XLSX 文件中设置一个全局标志,表示在打开文件时应重新计算所有公式和函数。这是 Excel 文档中推荐的方法,通常它适用于电子表格应用程序。但是,不具备计算公式功能的应用程序(例如 Excel Viewer)或某些移动应用程序只会显示 0 个结果。
如果需要,还可以使用可选的value参数指定公式的计算结果。在使用不计算公式结果的非 Excel 应用程序时,这有时是必要的:[...]
请注意,如果公式是这样的,您可以使用 Python 计算它们,并且您只关心最终的 PDF(没有人会使用电子表格,并且在您将其转换为 PDF 之后,您还是将其丢弃) ,那么你可以直接写值,根本不用公式。
【讨论】: