• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:java Excel書き込み)

java Excel書き込みの問題点と解決方法

このQ&Aのポイント
  • javaを使ったExcel書き込みのプログラムで、2行目に書き込みをすると1行目の一部の情報が消えてしまう現象が発生しています。
  • この現象を回避するために、最新の行に値を書き込む方法を説明します。
  • 具体的には、1行目から順に行を走査し、最初に値の入っていない行に書き込むことで、最新の行のみに値が残るようにします。

質問者が選んだベストアンサー

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 あくまで参考用に作ったのでそのままなんとなく追加しても動かないと思うのできちんと動作を把握して作成してくださいね。 まずAセルしか残らないのであれば、何故Aセルだけなのか?と考えます。 逆に言えばBCDセルは消えてしまう。 消えてしまう=どこかで空白文字を入れているか、初期化しているかetc と見ていくと if ( cell1 == null ) // 0番目のセルが取得できなかったら新規作成 cell1 = row.createCell(0); cell2 = row.createCell(1); cell3 = row.createCell(2); cell4 = row.createCell(3); ここ、poiを使うくらいだからと思ってもとの参考ソースでifの{}を省略して書いています。 省略すると真の時に実行されるのは次の行のみです。 cell1 = row.createCell(0);のみcell1==nullの場合実行されます。 じゃあ次からのcell2とかはどうなるの?というと 無条件でrow.createCellが実行されます。(=初期化みたいなもんです) だからBCDのみ消えてしまうんですね。(1行目から走査しているため常にBCD部分が初期化) 原因はここです。結果、以下のようにする必要があることがわかります。 if ( cell1 == null ) { // 0番目のセルが取得できなかったら新規作成 cell1 = row.createCell(0); cell2 = row.createCell(1); cell3 = row.createCell(2); cell4 = row.createCell(3); }

doborn
質問者

お礼

たびたびの回答ありがとうございます。 横着してました、すみませんorz 本当ですね、ifの後に{}がなかったことが原因だったのですね。 調べればすぐわかるようなことでした。。。 基礎ができておりませんでした、申し訳ございません。