【发布时间】:2018-10-31 18:38:57
【问题描述】:
我正在开发一个从 excel 文件中获取数据并在几次操作后输出一个 excel 的应用程序。 我有 2 个问题,第一个是那个:
在我的主 excel 文件上,我有这个值 170299024773,在 Excel 中它看起来像 1.703E+11,然后在输出文件上我得到 1.70299E+11,确切的值是 170299000000。
如您所见,这不是主文件的值。
此外,对于这个单元格,我有错误“数字存储为文本”,然后我从 Excel 中修复了这个错误,我得到了1.70E+11。
我看到了一些关于 Nember 存储文本,特别是 DataFormatter 的提示,但在我的情况下它并没有改变任何东西
我用来获取excel表格数据到数组的代码:
private static String[][] sheetToArray(org.apache.poi.ss.usermodel.Sheet sheet, int nbCol){
String[][] tmp = new String[sheet.getLastRowNum()+1][nbCol];
for (int i = 0; i < sheet.getLastRowNum()+1; i++) { //Config1 to array
Row row = sheet.getRow(i);
DataFormatter df = new DataFormatter();
for (int j = 0; j < nbCol; j++) {
Cell cellC1 = row.getCell(j);
tmp[i][j] = df.formatCellValue(cellC1);
}
}
return tmp;
}
非常感谢各位...
编辑:我修复了错误的值添加
switch (cellD2.getCellTypeEnum()){
case STRING:
tmp[i][j] = df.formatCellValue(cellC1);
break;
case NUMERIC:
tmp[i][j] = String.valueOf(cellC1.getNumericCellValue());
}
}
但是现在,我的数字状态中添加了一些十进制值...要解决它,我应该使用 DataFormatter 但在这种情况下,我会丢失正确的数据
【问题讨论】:
-
我修复了一个语句,但它为我的数值添加了一些小数,即编辑@AxelRichter
标签: java arrays excel apache-poi output