- PR -

エクセルへのダウンロード処理にて

1
投稿者投稿内容
いのき
ベテラン
会議室デビュー日: 2005/10/06
投稿数: 88
投稿日時: 2006-01-27 12:45
いつもお世話になります。いのきです。

現在、あるボタンをクリックするとエクセルファイルへのダウンロード処理を行うロジックを作成中です。
そこで、どうしても原因がわからないエラーが発生しています。
まず、以下にソースを記載します。
コード:
public void excel01(ActionMapping mapping, ActionForm form,
		HttpServletRequest request, HttpServletResponse response)
		throws Exception {

	// テンプレートとなるExcelファイルのパスを取得します。
	final String INVOICE_FILE = "/WEB-INF/classes/com/AAA.xlt";
	String filePath = this.getServlet().getServletContext().getRealPath(INVOICE_FILE);

	//ファイルを読み込みます。
	POIFSFileSystem filein = new POIFSFileSystem(new FileInputStream(filePath));

	// ワークブックを読み込みます。
	HSSFWorkbook wb = new HSSFWorkbook(filein);
	// シートを読み込みます。
	HSSFSheet sheet = wb.getSheet("BBB");

	// 行番号用の定数(縦)
	final int ROW_NO = 1;

	// 列番号用の定数(横)
	final short COL_NO = 1;

	HSSFRow row = sheet.getRow(ROW_NO);
	HSSFCell cell = row.getCell(COL_NO);
	・
	・
	・
}



ここで問題になっているのが、「HSSFCell cell = row.getCell(COL_NO);」の個所でNULLポインタでエラーになってしまうことです。
ファイルやシート名にも問題はなく、かつ「HSSFRow row = sheet.getRow(ROW_NO);」でも正常にオブジェクトを取得していました。

なぜ、NULLポインタでエラーになるのか、ご存知の方がいましたらご教授を宜しくお願い致します。

キリウム
会議室デビュー日: 2003/07/04
投稿数: 11
投稿日時: 2006-01-27 15:14
こんにちは

POIの読み込みに使っているエクセルファイルの内容はどうなってるのでしょうか?
内容がまったく無いとか?

気になったのですが
コード:
final String INVOICE_FILE = "/WEB-INF/classes/com/AAA.xlt";


で、xltにされているのは何か意図があってのことですか?
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-01-27 22:14
http://www.mki.ne.jp/developers/app/poi/error/index.html
こちらで、エクセルファイルの正常読み込み判定が行えます。
エラーはでていませんか?
いのき
ベテラン
会議室デビュー日: 2005/10/06
投稿数: 88
投稿日時: 2006-01-30 11:17
いつもお世話になります。いのきです。
キリウムさん、かつのりさん、返答が遅くなり大変申し訳ありませんでした。

何故なのかはわかりませんが、回避策を見つけました。
「HSSFCell cell = row.getCell(COL_NO);」の箇所ですが、
対象となるセルが作成されていないからエラーになるということで
「HSSFCell cell = row.createCell(COL_NO);」にしたら
正常に動作しました。
セルは、いちいちcreateしてから値を取得しないといけないのでしょうか?

<キリウムさんへ>
今回はお客様が指定したテンプレートを使用するということで、
拡張子「xlt」(Excelテンプレート)にしています。
深い意味はありません。
1

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