- PR -

jakarta-POI でテンプレートに埋め込んだ計算式が反映されない

1
投稿者投稿内容
kkk
会議室デビュー日: 2008/04/13
投稿数: 8
投稿日時: 2008-08-12 16:06
jakarta-POIでExcelをダウンロードする処理を作成しています。
POIのバージョンは「3.1-FINAL」です。

ダウンロードにはテンプレートのExcelを用意し、
計算式を埋め込み、Javaから数値をセットしています。

例えば以下のような感じです。
テンプレート側:セル(A1)・・・=$B$1+$B$2
Java側:セル(B1)・・・cell.setCellValue(100)
セル(B2)・・・cell.setCellValue(200)

これでダウンロードするとセル(A1)には「300」と計算されるはずなのですが、
計算式が反映されません。
値にカーソルをあてて選択し直すとちゃんと再計算されます。
setCellValueにも数値でセットしていますし、
解決方法がわかりません。

どなたがご教示いただけないでしょうか。
よろしくお願いいたします。

  
だっちょ
大ベテラン
会議室デビュー日: 2006/12/05
投稿数: 115
投稿日時: 2008-08-12 17:07
 POI-3.0.2でちょっと試してみたのですが、
cell.setCellFormula("$B$1+$B$2");
でうまくいくようです。
 ちなみに私はJExcelApiを使っているので、そちらだと
jxl.write.Formula cell = new jxl.write.Formula(cno, rno, "$B$1+$B$2");
をaddCellすれは大丈夫みたいです。
kkk
会議室デビュー日: 2008/04/13
投稿数: 8
投稿日時: 2008-08-12 17:26
だっちょさん
ご回答ありがとうございます。

ただ、私が実装したかったのは
Java側でcell.setCellFormulaするのではなく
元のテンプレートに計算式を埋め込みたかったのです。

POIのバージョンを3.1→2.5に落とすことによって
自動計算されるようになりましたので
原因はよくわかりませんが一旦解決しました。
まっつ
会議室デビュー日: 2008/08/22
投稿数: 1
お住まい・勤務地: 名古屋
投稿日時: 2008-08-22 10:19
POIの3.1-FINALだと自動計算しないので、
各シートで
sheet.setForceFormulaRecalculation(true);
してあげればOKです。

2.5 だと計算式内の文字が化けるので気を付けてください。


[ メッセージ編集済み 編集者: まっつ 編集日時 2008-08-22 10:20 ]
1

スキルアップ/キャリアアップ(JOB@IT)