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-updates(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によって保存されない)]の2つのドロップダウンを[常に再計算]に変更します。[OK]をクリックして、スプレッドシートとLibreOfficeを閉じます。LibreOfficeでファイルを開くと、数式が再計算されていることがわかります。

また、[ツール]-[セルの内容]に移動し、[自動計算]が選択されていることを確認します。

于 2017-08-29T14:40:18.590 に答える