为什么在Apache POI中更改单元格类型是非法的?下面的代码导致IllegalStateException: Cannot get a error value from a numeric cell
。
Cell mycell = myrow.createCell(0);
// Make it numeric by default.
mycell.setCellType(Cell.CELL_TYPE_NUMERIC);
if (someCondition) {
mycell.setCellType(Cell.CELL_TYPE_STRING); // IllegalStateException
}
是否有解决此问题的方法(如不引入其他逻辑)?
答案 0 :(得分:0)
我不确定这是否会避免你的“没有额外的逻辑”,但这里有:
Cell mycell = myrow.createCell(0);
// Make it numeric by default.
int cellType = Cell.CELL_TYPE_NUMERIC;
if (someCondition) {
cellType = Cell.CELL_TYPE_STRING;
}
mycell.setCellType(cellType);
Javadoc没有说明为什么它会抛出IllegalStateException
所以我会避免它(通过执行上述操作)或者深入挖掘源代码。
答案 1 :(得分:-1)
修正了它。将流式版本(org.apache.poi.xssf.streaming.SXSSFWorkbook
)替换为非流式版本(org.apache.poi.xssf.usermodel.XSSFWorkbook
)后,异常消失了。我对XSSFWorkbook很满意,因为我只用几行来填充XLSX。