2
#!/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 上运行良好。但是今天这不再起作用(中的值A10) - 可能是由于一些 LibreOffice 更新(LibreOffice 3.5 Build-ID: 350m1(Build:402))。

Excel::Writer::XLSXoccasionally文档的以下部分是否涉及此类情况?

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

4

2 回答 2

1

Excel::Writer::XLSX 不计算它编写的公式的值。相反,它插入 0 并允许用户在需要时指定值。

这不是一个很好的解决方案,但它是可以做到的最好的,因为计算任意复杂的公式超出了模块的范围。

而且,通常 Excel 和其他第三方应用程序会重新计算公式值以供显示。

于 2012-07-03T17:24:29.533 回答
1

这是 LibreOffice 中的一个设置。这是一个解决方案(从这里引用):

LibreOffice 有意不重新计算较旧的电子表格,因为随着公式在版本之间或不同电子表格程序之间的更新,结果可能会有所不同。转到工具 - 选项 - LibreOffice Calc,在“文件加载时重新计算”下,将“Excel 2007 及更高版本”和“ODF 电子表格(未由 LibreOffice 保存)”这两个下拉列表更改为“始终重新计算”。单击确定,关闭电子表格和 LibreOffice。现在在 LibreOffice 中打开文件,您应该会看到公式已重新计算。

还要转到工具 - 单元格内容并确保选择了自动计算。

于 2017-08-29T14:40:18.590 回答