Excel :: Writer :: XLSX:LibreOffice的问题

时间:2012-07-03 14:47:27

标签: perl excel-formula libreoffice

#!/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

2 个答案:

答案 0 :(得分:1)

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

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

并且,通常Excel和其他第三方应用程序将重新计算显示的公式值。

答案 1 :(得分:0)

这是LibreOffice中的一个设置。这是一个解决方案(引自here):

  

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

     

同样转到工具 - 单元格内容,并确保选中了自动计算。