Apache POI:更改CellType会导致IllegalStateException

时间:2012-06-01 11:46:56

标签: java apache-poi illegalstateexception

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

是否有解决此问题的方法(如不引入其他逻辑)?

2 个答案:

答案 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。