質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

3回答

7713閲覧

JavaでExcelのセルを取得するとnullしかとれない

javabigineer

総合スコア87

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/05/25 01:44

Javaで、Excelのセルに値を出力する処理を作成しています。

Ver : Java1.8
lib : poi-3.16-beta2.jar
poi-ooxml-3.16-beta2.jar

下記処理にて、値を出力する処理にてjava.lang.NullPointerExceptionが発生します。

// セルオブジェクトを取得する Cell past_totalCountCell = getCell(sheet,"A1"); // 全台数 // セルに値を出力する past_totalCountCell.setCellValue(10); // 全台数
// A1形式でセルを取得するメソッド public Cell getCell(Sheet sheet, String position) { CellReference reference = new CellReference(position); // A1形式 Row row = sheet.getRow(reference.getRow()); if (row != null) { Cell cell = row.getCell(reference.getCol()); return cell; } return null; }

同様のgetCellメソッドを使用してセル値を取得することはできたのですが、
セルに出力することができません。
自分では何が間違っているのかわからない状態になってます。。
なにかお気づきのことありましたらご指摘いただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

いま分かっている情報では、原因と直し方までは分かりません。

まず最初に、データが悪いのか(Excelファイルの問題なのか)、プログラムが悪いのかを突き止めてください。そのためには、どこまで正しく動いているのかを順番に調べる必要があります。

NullPointerExceptionが出るということなので、getCell()が、該当のセルを取り出せず、nullを返しているのかもしれません。このプログラムですと2つのケースでnullが返ります。

  1. rowが取り出せなかった場合
  2. rowは取り出せたけどセルが取り出せなかった場合

デバッガなどを使用して、まずどちらのケースなのか調べてみるといいでしょう。

それが切り分けられたら、次は、データが悪いのか、プログラムが悪いのかを調べてください。データの該当のセルに本当に値が入っているのか? なにかpoiがサポートしていない書式などがセルに設定されてないか、poiの使い方が間違っていないか、などなど。

起こっている現象がある程度把握できれば、それに対して解決策をアドバイスできる人も現れるでしょう。

投稿2017/05/25 02:22

編集2017/05/25 02:37
tatsuya6502

総合スコア2035

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

もともと空のセルは問い合わせてもオブジェクトとして取れません。
createCellし、行情報も取れないならさらにcreateRowした上でセルオブジェクトを行オブジェクトに突っ込み、その行オブジェクトをシートオブジェクトに突っ込み、という流れで操作します。

投稿2017/05/25 10:23

yuba

総合スコア5568

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Java

1Cell past_totalCountCell = getCell(sheet,"A1"); // 全台数

そもそもこの past_totalCountCell が取れているでしょうか?
あるいは sheet が正しく渡せていないとかでしょうかね。

具体的に NullPointerException が出ている「行」はどれなのですか?

投稿2017/05/25 02:02

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

javabigineer

2017/05/25 04:01

// セルに値を出力する past_totalCountCell.setCellValue(10); // 全台数 past_totalCountCellがnullになっているので、ここの処理でNullPointerExceptionはでています。
tacsheaven

2017/05/25 04:08

ということは、getCell が null を返した、ということになります。 getCell が null を返すのは、 ・セルが見つからない場合 ・行が見つからない場合 ですが、セル指定は "A1" 固定ですから、シートがない、が一番可能性が高そうな気が。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問