#!/usr/bin/env perl
use warnings;
use strict;
use Excel::Writer::XLSX;
my $workbook = Excel::Writer::XLSX->new( 'perl.xlsx' );
my $worksheet = $workbook->add_worksheet();
$worksheet->write_formula( 'A1', '=SUM(1, 2, 3, 4)' );
$workbook->close();
直到现在,这与LibreOffice一起运作良好。但是今天这不再起作用了(A1
中的值是0
) - 可能是由于一些LibreOffice更新(LibreOffice 3.5 Build-ID:350m1(Build:402))。
Excel::Writer::XLSX文档的以下部分中的occasionally
是否涉及此类情况?
If required, it is also possible to specify the calculated value of the formula. This is occasionally necessary when working with non-Excel applications that don't calculate the value of the formula. The calculated $value is added at the end of the argument list
答案 0 :(得分:1)
Excel :: Writer :: XLSX不计算它写入的公式的值。相反,它插入0并允许用户在需要时指定值。
这不是一个很好的解决方案,但它是最好的,因为计算任意复杂公式超出了模块的范围。
并且,通常Excel和其他第三方应用程序将重新计算显示的公式值。
答案 1 :(得分:0)
这是LibreOffice中的一个设置。这是一个解决方案(引自here):
LibreOffice故意不重新计算旧的电子表格, 因为公式从版本更新到版本或之间 不同的电子表格程序,结果可能会有所不同。去 工具 - 选项 - LibreOffice Calc,在“重新计算文件”下 加载',更改两个下拉菜单,'Excel 2007及更新'和'ODF 电子表格(不是由LibreOffice保存)','始终重新计算'。 单击“确定”,关闭电子表格和LibreOffice。现在打开文件 LibreOffice,您应该看到公式已重新计算。
同样转到工具 - 单元格内容,并确保选中了自动计算。