1

为什么在 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
}

有没有办法解决这个问题(如不引入额外的逻辑)?

4

2 回答 2

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,所以我会避免它(通过执行上述操作)或去挖掘源代码。

于 2012-06-01T13:01:58.483 回答
-1

修复。将流版本 ( org.apache.poi.xssf.streaming.SXSSFWorkbook) 替换为非流版本 ( ) 后org.apache.poi.xssf.usermodel.XSSFWorkbook,异常消失了。我对 XSSFWorkbook 没问题,因为我只用几行来填充 XLSX。

于 2012-06-04T08:03:07.133 回答