- PR -

POIでExcelデータ取得について

投稿者投稿内容
Java1年生
会議室デビュー日: 2007/10/08
投稿数: 12
投稿日時: 2007-10-11 00:34
POIにて、EXCELのデータを取得する処理を作成しているのですが、
EXCELで1.0と入力した場合と、1と入力した場合の区別をつけたいのですが、
どちらも「CELL_TYPE_NUMERIC」としてしか認識できないため、
Integerか、Doubleか判別する方法はないでしょうか。
また、セルには99と入力していても、書式設定で、099と、3桁固定にしているセルについて、099と取得する方法はないでしょうか。
でゅうく
大ベテラン
会議室デビュー日: 2003/11/30
投稿数: 129
投稿日時: 2007-10-12 15:14
整数・浮動小数点の判定も前ゼロの編集も、セルの表示形式に従って、それなりの処理を行うしかないんじゃないかな。
# 面倒な処理になるのでお薦めしませんけど・・・。
Excel の表示形式の取得方法は、HSSF コンポーネントの HSSFDataFormat クラスについて調べてみてください。
HSSFDataFormat は、ここの会議室でも何度か話題になっていますね。

引用:

また、セルには99と入力していても、書式設定で、099と、3桁固定にしているセルについて、099と取得する方法はないでしょうか。


ちなみに、僕の使っている Excel では、表示形式に "099" と指定してあるセルに 99 と入力すると "9999" って表示されますよ。
Java1年生
会議室デビュー日: 2007/10/08
投稿数: 12
投稿日時: 2007-10-12 15:36
ありがとうございます。
教えていただいた会議室も見させてもらいます。

引用:

ちなみに、僕の使っている Excel では、表示形式に "099" と指定してあるセルに 99 と入力すると "9999" って表示されますよ。



すみません、"099"ではなく、"000"の間違いでした。

でゅうく
大ベテラン
会議室デビュー日: 2003/11/30
投稿数: 129
投稿日時: 2007-10-12 18:08
引用:

教えていただいた会議室も見させてもらいます。


あ、いや・・・ごめん。
「ここの会議室」ってリンク先の会議室って意味じゃなくて、まさにここ 「Java Solution 会議室」って意味でした。
検索してみてねって意味でリンクにしたんだけど、紛らわしかったですね。


扱うワークブックってどのセルに何が入力されているとか決まってないんですか?
もし、そういう定型的なワークブックだったなら、データの取り扱いは決め打ちで処理した方がいいと思います。
Java1年生
会議室デビュー日: 2007/10/08
投稿数: 12
投稿日時: 2007-10-13 18:44
POIの取込みで、もう1つ教えてください。

A1のセルに、「=A2」など、
他のセルの参照を記述すると、
cell.getCellFormula();
メソットを使用して、
「A2」という結果が取得できますが、
A2のセルデータを取得する場合は、
A2セルを指定してセルを取得するしかないでしょうか?
また、その他の=SUMや、=VLOOKUP()などの、
関数に関して、計算結果を取得することはできないのでしょうか?

よろしくお願いします。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-10-13 23:09
それらの演算自体がExcelによって処理されるものですからねぇ。
データファイルであるxlsファイル上ではその計算方法が書かれているだけ。
計算結果が得たければ動きをエミュレートするしかないでしょう。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-10-14 01:21
POIを使うならExcelファイルはPOIの都合に合わせるのが楽です。
定型のExcelファイルなら、VBAマクロ辺りで、

1.終了時に隠しシートを作る
2.隠しシートに読み取るられる値を埋め込む
3.保存

というような処理を暗黙的に行うようにして、
POIからはシンプルにそのシートから読み取るのがいいと思いますね。
Java1年生
会議室デビュー日: 2007/10/08
投稿数: 12
投稿日時: 2007-10-16 09:03
nagiseさん、かつのりさん、回答ありがとうございます。
やっぱりそうですよね。
Excelマクロでなんとかデータを違うセルに移して、
そちらを取得する方向で検討します。

ありがとうございました。

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