« JavaScriptからエクセルファイルを扱える ExcelJs | トップページ | 見土呂1周16分15秒ぇ »

2018.06.15

npm ExcelJsが計算式の結果を自動更新しない理由

昨日検証したExcelJsで、計算式が設定されてるセルの値が自動的に更新されない件について、GitHubのIssueを検索してみると、3年ほど前に、ちょっとした会話があって「ああなるほどな」と納得した。

結論としては「とりあえず自分で再計算して更新しましょう」ってことですよ。

このやり取りは以下のような感じです(抄訳)。 この後にも続いているけど、本論からズレて「Excelでこうすりゃいいよ」みたいなことなので省略。 Closeされてないのが少し気にはなりますが。

@morgante

既存のXLSファイルの中を読み込んで値を更新したら、計算式の結果が新しくなっててほしいのだけど、ドキュメントではよくわからん。

例えば以下のシートがある場合:

A1=3
A2=4
A3=7
A4=sum(A1:A3)

A3を8にしたら、A4の値は15になってほしいのね。

@guyonroche
worksheet.getCell('A3').value = 8;

// A4には計算式の結果の値があると仮定して
worksheet.getCell('A4').value.result = 15;
@boloeng

@guyonroche ライブラリでは計算式を計算しないけど、元のファイルから取り出されている。と理解してるけど合ってる?

@guyonroche

そう、ライブラリがExcelを置き換えるのではないから結果を計算しません。少なくとも今のところはね。

これ読んで「えーっ不親切やなー」って思った人は私ですが、よくよく考えると、

再計算は大変なんです、その理由・・・

まず、読み込んだワークブックには、「計算式が、どのセルを参照しているか?」という情報がない。

だから、読み込み時に全セルを総なめして「セルの参照マップ」を作っておかねばならなくて、セルが更新されたら、マップを逆にたどって影響を受けるセルを更新する必要があるのですが、計算式は単なるテキスト情報なので構文解析せなアカン。

Excelの膨大な数のワークシート関数も実装しなけりゃ意味がない。 デカいファイルだと開くだけでも負荷高そうです。 不可能じゃないけど、やる価値ある?って話ですね。

再計算は、こういう理由で実装できないという判断でしょう。 まったく妥当な判断だ。

そもそも「知ってるでしょ?」って話でもある。

そして、そもそもですね、特定のセルを更新し、そこを参照している特定の計算式のセルを更新したいということなら、そのワークブックの仕様をよく知っているということですよね。 だから計算できるでしょ?ってことでもあるのですね。

完全に理解した。

Excel 最強の教科書[完全版]――すぐに使えて、一生役立つ「成果を生み出す」超エクセル仕事術


朝まさかのパラパラ雨。慌ててカッパ着てたいして濡れずに終了。 昼間に少し降ってたようだが、夕方には上がってた。 台風の影響なのか、北西からの風が強くて幹線道路途中で海沿いへ迂回して追い風快適。

三日連続の夕方ランは、さすがに速度が乗らない。3.8キロ、6分/km。このペースにしては消耗がひどい。

あさって日曜日は魚住中尾の住吉神社で「あじさい祭り」。
Dsc_2886

« JavaScriptからエクセルファイルを扱える ExcelJs | トップページ | 見土呂1周16分15秒ぇ »

プログラミング」カテゴリの記事

ランニング」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: npm ExcelJsが計算式の結果を自動更新しない理由:

« JavaScriptからエクセルファイルを扱える ExcelJs | トップページ | 見土呂1周16分15秒ぇ »

2019年8月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
フォト

Google AdSense

銀の弾丸

無料ブログはココログ

他のアカウント