2012-07-03 72 views
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正常工作。但是今天這不再工作(A1中的值是0) - 可能是由於某些LibreOffice更新(LibreOffice 3.5 Build-ID:350m1(Build:402))。Excel :: Writer :: XLSX:LibreOffice的問題

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

回答

1

的Excel ::作家:: XLSX不計算它寫了一個公式的值。相反,它插入0,並允許用戶根據需要指定值。

這不是一個很好的解決方案,但它是最好的,因爲計算任意複雜的公式超出了模塊的範圍。

而且,通常Excel和其他第三方應用程序將重新計算公式值以供顯示。

0

這是LibreOffice中的一個設置。這裏是一個解決方案(引自here):

的LibreOffice故意不重新計算舊電子表格, 因爲公式更新因版本或 不同的電子表格程序之間,其結果可能是不同的。轉至 工具 - 選項 - LibreOffice Calc,在'重新計算文件 加載'下,將兩個下拉菜單'Excel 2007 and newer'和'ODF 電子表格(不由LibreOffice保存)'更改爲'Always recalculate' 。 點擊確定,關閉電子表格和LibreOffice。現在打開 LibreOffice中的文件,您應該看到公式已重新計算。

也轉到工具 - 單元格內容並確保已選擇AutoCalculate。