3

XLS/XLSX ファイル処理に Apache POI 3.9 を使用しています。

XLS シートには、「3000053406」のような数値の列があります。

POIで読んでみると..

cell.getNumericCellValue()

「3.00E+08」のような値を与えてくれます。これは私のアプリケーションに大きな問題を引き起こします。

Apcahe POI でデータを読み取っているときに数値の書式を設定するにはどうすればよいですか?

私が知っている方法は、列を「テキスト」タイプに設定することです。しかし、データの読み取り中に Apache POI 側で他の方法があるかどうかを知りたいです。または、単純な Java DecimalFormatter を使用してフォーマットできますか?

4

4 に答える 4

2

こいつはよく出てくる……。

ほぼ同じ質問に対する過去の回答の 1 つを選ぶ

あなたがしたいことは、DataFormatter クラスを使用することです。これをセルに渡すと、Excel がそのセルに対して表示する内容を含む文字列が返されるように最善を尽くします。文字列セルを渡すと、文字列が返されます。書式設定ルールが適用された数値セルを渡すと、それらに基づいて数値が書式設定され、文字列が返されます。

あなたの場合、数値セルには整数の書式設定ルールが適用されていると思います。これらのセルをフォーマットするよう DataFormatter に依頼すると、整数文字列を含む文字列が返されます。

于 2012-12-29T09:05:46.223 に答える
1

問題は、POI 関連ではなく、厳密に Java 関連である可能性もあります。あなたの呼び出しは double を返すので、

double val = cell.getNumericCellValue();

あなたはこれを手に入れたいかもしれません

DecimalFormat df = new DecimalFormat("#"); int fractionalDigits = 2; // say 2 df.setMaximumFractionDigits(fractionalDigits); double val = df.format(val);

于 2014-10-13T12:16:24.280 に答える