Java 加载了POI的excel文件的奇怪内容
我获得了一个excel(.xls)文件,似乎无法使用POI库(测试版本为3.9、3.10.1)正确加载该文件。加载后的文件内容如下:Java 加载了POI的excel文件的奇怪内容,java,excel,apache-poi,Java,Excel,Apache Poi,我获得了一个excel(.xls)文件,似乎无法使用POI库(测试版本为3.9、3.10.1)正确加载该文件。加载后的文件内容如下: ,尺寸1,尺寸2,尺寸3,尺寸4,。。。实际值,0.0014,16.0329,240.4296,。。。尺寸22MAX,尺寸22MIN,,,,,,,。 而真正的内容是: Critical Parameters & Quality Data Manufacturing Supplier: Manufacturer Supplier name: ???
,尺寸1,尺寸2,尺寸3,尺寸4,。。。实际值,0.0014,16.0329,240.4296,。。。尺寸22MAX,尺寸22MIN,,,,,,,。
而真正的内容是:
Critical Parameters & Quality Data
Manufacturing Supplier:
Manufacturer Supplier name: ???
Manufacturer Supplier code:
Sampling Sample Size: 1
...
编辑我已更新该文件是使用VBA生成的 使用的java代码:
Workbook workbook;
workbook = WorkbookFactory.create(fileInputStream);
workbook.setMissingCellPolicy(Row.CREATE_NULL_AS_BLANK);
Sheet sheet = workbook.getSheetAt(0);
FormulaEvaluator evaluator = workbook.getCreationHelper()
.createFormulaEvaluator();
inputMatrix = new ArrayList<>();
for (int j = 0; j <= sheet.getLastRowNum(); j++) {
ArrayList<Object> tRow = new ArrayList<>();
Row row = sheet.getRow(j);
if (row != null) {
for (int i = 0; i < row.getLastCellNum(); i++) {
Cell cell = row.getCell(i);
if (cell == null)
tRow.add("");
else
try {
switch (evaluator.evaluateInCell(cell)
.getCellType()) {
case Cell.CELL_TYPE_STRING:
String strVal = /*cell.getStringCellValue();*/ cell.getRichStringCellValue().toString();
tRow.add(strVal);
break;
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
tRow.add(cell.getDateCellValue());
} else {
tRow.add(cell.getNumericCellValue());
}
break;
case Cell.CELL_TYPE_BOOLEAN:
tRow.add(cell.getBooleanCellValue());
break;
case Cell.CELL_TYPE_FORMULA:
tRow.add(cell.getCellFormula());
break;
default:
tRow.add("");
}
} catch (Exception e) {
tRow.add("ERR");
logger.error("error evaluating excel file, assigning ERR value to the cell.", e);
}
}
}
inputMatrix.add(tRow);
}
工作簿;
工作簿=WorkbookFactory.create(fileInputStream);
工作簿.setMissingCellPolicy(行.创建为空\u为空);
工作表=工作簿。getSheetAt(0);
FormulaEvaluator evaluator=工作簿.getCreationHelper()
.createFormulaEvaluator();
inputMatrix=新的ArrayList();
对于(int j=0;j事实证明,问题是第一张被隐藏的纸。奇怪的是,它的内容与上面写的完全不同。我将更新问题以澄清。