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、例外はなくなりました。XLSX には数行しか入力していないので、XSSFWorkbook で問題ありません。

于 2012-06-04T08:03:07.133 に答える