- - PR -
poiを用いたセルの取得方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-12-09 15:44
ただいまPoiを使用してJavaアプリケーションを作成しております。
Excelよりデータを取得する際にセル内に「123,456,789,012」とあった場合、 getNumericCellValue()では取得できませんでした。 ex.「123,456,789,012」と入力された数値型のセルを参照し、値を取得する。 String retValue = String.valueOf(cell.getNumericCellValue()); このロジックではcellの参照先は正しいものが指定されており、 そこには上記の数値が入っています。 取得した結果、retvalueには「1.23456789012E11」等で帰ってくる為、 getNumericCellValue()では値をint型で取得し、double型で戻しているような気がします。 もしこれを正常な値(今回のケースでは123,456,789,012と取得したい)で取得したい場合はどのようなロジックが必要でしょうか? ご存知の方いらっしゃいましたらご教示ください。 |
|
投稿日時: 2005-12-09 15:54
POIは、POIが内蔵するエクセルファイルパーサがオブジェクトモデルを構
築する際に、数値型セルの値をdouble決め打ちで保管しています。 ですので、数値型のセルからはdouble型でしか値を取得することが出来ない はずです。 桁落ちが発生して困るような精度の数値をやり取りしたい場合、 ・Excelセルには文字型のセルとを定義し、そこに値を文字列として記述する ・POIからは文字列として取得する とすべきかと思います。 |
|
投稿日時: 2005-12-09 16:01
>シュンさん
早速の回答ありがとうございます。 自分もその方法を考えたのですが 今回セルの書式を固定で持つことが出来ません。 その為、getCellType()を使用し数値型であると判断した場合、 下記のような処理を行いたいと思います。 getNumericCellValue()を使用してもdoubleにてセルの値を判断しているとの ことですが、今回のケースでは12桁を整数値を取得するのですが double型であれば問題ないような気がしますが、そういうわけではないのでしょうか? |
|
投稿日時: 2005-12-09 16:13
ああ、今回の問題となる箇所は、POIではなくて「12桁整数値を持つ
double型変数を文字列化する処理」ですね。すみません、良く分か っていませんでした。 String#valueOf(double)は、"X.XXXEXX"という文字列を作ってし まいますので、別のメソッドを呼んでください。 String.valueOf((long)cell.getNumericCellValue()); |
|
投稿日時: 2005-12-09 16:20
>シュンさん
アドバイスのメソッドをしようしたところ、正常に 値をとることが出来ました。 ありがとうございました。 ----------解決済み---------- |
1