xlsxwriter 和 LibreOffice 没有显示公式的结果
回答问题 我正在尝试使用一个简单的公式创建一个 Excel 文件: import xlsxwriter workbook = xlsxwriter.Workbook('testxlsx.xlsx', {'strings_to_numbers': True}) ws = workbook.add_worksheet() ws.write('A2', 'Number one') ws.write('B
回答问题
我正在尝试使用一个简单的公式创建一个 Excel 文件:
import xlsxwriter
workbook = xlsxwriter.Workbook('testxlsx.xlsx', {'strings_to_numbers': True})
ws = workbook.add_worksheet()
ws.write('A2', 'Number one')
ws.write('B2', '1')
ws.write('A3', 'Number two')
ws.write('B3', "1000")
ws.write('A4', "Number three")
ws.write('B4', "1050")
ws.write('A5', "Number four")
ws.write('B5', "3")
ws.write('A6', "Result")
ws.write('B6', '=IF(B5=3,ROUND(100-(B3/B4*100),1),ROUND(100-(B3/(B4*1.502)*100),1))')
workbook.close()
生成的文件在 Excel 中完美运行,但在 LibreOffice Calc 中打开时,不会计算公式。我需要重新输入数值,然后它才能工作。
我究竟做错了什么?
Answers
来自 xlsxwriter文档:
XlsxWriter 不计算公式的结果,而是将值 0 存储为公式结果。然后它在 XLSX 文件中设置一个全局标志,表示在打开文件时应该重新计算所有公式和函数。这是 Excel 文档中推荐的方法,通常它适用于电子表格应用程序。但是,没有计算公式功能的应用程序(例如 Excel Viewer)或某些移动应用程序将仅显示 0 结果。
至于为什么重新计算不会自动发生,来自ask.libreoffice.org 的回答:
LibreOffice 有意不重新计算旧的电子表格,因为随着版本的更新或不同的电子表格程序之间的公式更新,结果可能会有所不同。转到工具 - 选项 - LibreOffice Calc,在“文件加载时重新计算”下,将“Excel 2007 及更高版本”和“ODF 电子表格(未由 LibreOffice 保存)”这两个下拉列表更改为“始终重新计算”。单击确定,关闭电子表格和 LibreOffice。现在在 LibreOffice 中打开文件,您应该会看到公式已重新计算。
还可以转到工具 - 单元格内容并确保选择了自动计算。
我已经确认设置“总是重新计算”或“提示”对我有用。或者,您可以随时按 control-shift-F9。
更多推荐
所有评论(0)