数値はすべて、ApachePOIセルの値からDoubleとして返されます。
するとgetCell(...).toString()
、Excelで「123」と表示されていた数値が「123.0」に変換されます。
数値が整数として表示されるべきだったことをどのように知ることができますか?Excelが「一般」フォーマットで行うことを複製するためにJavaに適用する必要のある魔法はありますか?
数値はすべて、ApachePOIセルの値からDoubleとして返されます。
するとgetCell(...).toString()
、Excelで「123」と表示されていた数値が「123.0」に変換されます。
数値が整数として表示されるべきだったことをどのように知ることができますか?Excelが「一般」フォーマットで行うことを複製するためにJavaに適用する必要のある魔法はありますか?
Excelは、ほとんどすべての数値を浮動小数点値としてファイル形式で格納します。そのため、POIは、数値セルにdoubleを返します。これは、実際に存在していたものです。
あなたの質問からははっきりしていませんが、あなたがしたいのは、Excelで見られるような数値を含むJavaでStringオブジェクトを取得することだと思いますか?つまり、セルに適用されたフォーマット規則を生の数値に適用し、フォーマットされた文字列を返しますか?
もしそうなら、あなたはここでの私の答えとまったく同じことをしたいと思います。引用するには:
あなたがしたいのは、DataFormatterクラスを使用することです。これをセルに渡すと、Excelがそのセルに対して表示する内容を含む文字列を返すのが最善です。文字列セルを渡すと、文字列が返されます。フォーマットルールが適用された数値セルを渡すと、それらに基づいて数値がフォーマットされ、文字列が返されます。
あなたの場合、数値セルには整数のフォーマット規則が適用されていると思います。DataFormatterにこれらのセルをフォーマットするように依頼すると、整数文字列を含む文字列が返されます。
編集そして、JavaDocsをクリックするのがちょっと大変だと思われる方は、 DataFormatter.formatCellValue(Cell)メソッドを使用する必要があります。繰り返す場合は、次のように実行します。
Workbook workbook = WorkbookFactory.create(new File("input.xlsx"));
DataFormatter formatter = new DataFormatter();
Sheet s = workbook.getSheetAt(0);
for (Row r : s) {
for (Cell c : r) {
System.out.println(formatter.formatCellValue(c));
}
}
// We create a variable of type Workbook and load the excel for reading the fields.
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream("LIST.xls"));
// Getting the working sheet
HSSFSheet sheet = workbook.getSheetAt(0);
// Getting the working row
HSSFRow row = sheet.getRow(0);
// Store the numeric value on Int var
int d = (int) row.getCell(0).getNumericCellValue();
// Printing the result
System.out.println(d0);
// Close the current workbook
workbook.close();