如何在转换成pdf之前使unoconv自动计算公式?

时间:2016-01-07 07:44:35

标签: python excel pdf libreoffice unoconv

我使用python模块Xlsxwriter创建了一个.xlsx文件。

效果很好,但是当我运行

时,任何包含公式的单元格都将显示为空或0
    hintNameSrc.performAction(AccessibilityNodeInfo.ACTION_PASTE);

如何在转换为pdf之前强制unoconv自动计算值?

1 个答案:

答案 0 :(得分:3)

在撰写本文时,显然unoconv故意不进行任何重新计算,因为它可能会导致错误。见Issue 97。 unoconv的源代码的相关部分已被注释掉。

所以你可以尝试的一件事就是进入你的unoconv副本并取消注释这些行(让它们再次激活)。你可能会收到错误,或者你可能没事。

如果您的公式很简单,您可以尝试的另一件事是使用Python计算它们并使用XlsxWriter将结果与公式一起编写。请注意,worksheet.write_formula() method有一个可选的value参数。引用官方文档:

  

XlsxWriter不计算公式的结果,而是将值0存储为公式结果。然后,它在XLSX文件中设置一个全局标志,表示在打开文件时应重新计算所有公式和函数。这是Excel文档中推荐的方法,通常它适用于电子表格应用程序。但是,没有计算公式的工具的应用程序(如Excel Viewer)或某些移动应用程序只会显示0结果。
  
  如果需要,还可以使用可选的value参数指定公式的计算结果。当使用不计算公式结果的非Excel应用程序时,偶尔需要这样做:[...]

请注意,如果公式是这样的,您可以使用Python计算它们,并且您只关心最终的PDF(没有人会使用电子表格,并且在您将其转换为PDF之后,您只需将其丢弃) ,那么你可以直接写出值,而不需要公式。