2012-06-01 52 views
1

为什么在Apache POI中更改单元格类型是非法的?代码如下导致IllegalStateException: Cannot get a error value from a numeric cellApache POI:更改CellType会导致IllegalStateException

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

为什么不在创建单元格时设置单元格类型? 'myrow.createCell(0,cellType)' – Gagravarr

回答

-1

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

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,所以我只想避免它(通过上述这样做)或者去挖掘源代码。

相关问题