我的目标是读取一个excel文件,并打印其中的值。如果值为5,则我的输出必须为5.但它返回5.0。以下是我尝试过的代码。
FileInputStream fileInputStream = null;
XSSFSheet xssfResultSheet = null;
String filePath = "C:\\MyXcel.xlsx";
fileInputStream = new FileInputStream(new File(filePath));
XSSFWorkbook workbook = null;
workbook = new XSSFWorkbook(fileInputStream);
xssfResultSheet = workbook.getSheet("Sheet1");
int iRowCount = xssfResultSheet.getLastRowNum();
for (int i = 1; i <= iRowCount; i++) {
Row resultRow = xssfResultSheet.getRow(i);
System.out.println(resultRow.getCell(0));
}
我的Excel的值为1,2,3,但我的输出为1.0,2.0,3.0。相反,我的输出也应该是1,2,3
答案 0 :(得分:8)
变化:
System.out.println(resultRow.getCell(0));
要:
System.out.println(new DataFormatter().formatCellValue(resultRow.getCell(0)));
<强>解释强>
apache-poi
提供DataFormatter
类作为实用程序,以利用excel上显示的内容的格式。您也可以选择自定义格式,一个简单的例子就是(单元格是对XSSFCell
对象的引用):
Excel工作表看起来像:
<强>代码:强>
System.out.println(new DataFormatter().formatCellValue(cell));
上面一行会打印出来:
50%
$ 1,200
12/21/14
9886605446
而正常的印刷品会以不同的方式解释它:
0.5
1200.0
21-Dec-2014
9.886605446E9
答案 1 :(得分:2)
试试这个,
System.out.println((int)Math.round(cell.getNumericCellValue()));
答案 2 :(得分:1)
POI应该有一个cell.getRawValueAsString()方法,但AFAIK并非如此。您在Excel中看到的显示文本是值+格式的总和。因此,如果您想“按显示”恢复它:
答案 3 :(得分:0)
看看这是否有帮助:
使用toString将单元格的值转换为字符串后,尝试使用parseInt。
Cell cell=row.getCell(n);
首先,使用toString()
将单元格的值转换为StringString cell_value = cell.toString()
使用parseInt将其转换为整数:
int waitTime = Integer.parseInt(cell_value);
现在测试parseInt是否完成了它的工作。
System.out.print(waitTime+1);
答案 4 :(得分:-2)
Apache POI将您的数字单元格值解释为double,为了避免这种情况,请尝试设置单元格类型。也许这会对你有所帮助:
for (int i = 1; i <= iRowCount; i++) {
Row resultRow = xssfResultSheet.getRow(i);
resultRow.getCell(i).setCellType(Cell.CELL_TYPE_STRING);
System.out.println(Integer.parseInt(resultRow.getCell(0).toString()));
}