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

How to make unoconv auto calculate formulae before converting into pdf?

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

效果很好,但是当我 运行

时,任何包含公式的单元格都会显示为空或 0
unoconv -f pdf spreadsheet.xlsx

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

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

所以你可以尝试的一件事是进入你的 unoconv 副本并取消注释这些行(让它们再次激活)。你可能会出错,也可能没问题。

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

XlsxWriter doesn’t calculate the result of a formula and instead stores the value 0 as the formula result. It then sets a global flag in the XLSX file to say that all formulas and functions should be recalculated when the file is opened. This is the method recommended in the Excel documentation and in general it works fine with spreadsheet applications. However, applications that don’t have a facility to calculate formulas, such as Excel Viewer, or some mobile applications will only display the 0 results.

If required, it is also possible to specify the calculated result of the formula using the optional value parameter. This is occasionally necessary when working with non-Excel applications that don’t calculate the result of the formula: [...]

请注意,如果公式可以用 Python 计算,并且您只关心最终的 PDF(没有人会使用电子表格,在将其转换为 PDF 后您无论如何都把它扔掉),那么你可以直接写出这些值,根本不需要公式。