レコード数、列数の多いPOIでのエクセル出力は、どうしても遅くなりがちですが、Javaのヒープ上限を超えて、エラーで出力不能となったことがあり、直しました。
[ コードサンプル ]
org.apache.poi.xssf 以下に替えて、org.apache.poi.ss 以下のAPIをインポート
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellReference;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.*;
import org.apache.poi.ss.usermodel.WorkbookFactory;
テンプレート読込
/**
* テンプレート読込
*
* @throws IOException ファイル読込みエラー
*/
public void readTemplate() throws IOException {
try {
InputStream fi = new FileInputStream(new File(exTmplFName));
this.wb = WorkbookFactory.create(fi);
}
catch (Exception e) {
e.printStackTrace();
}
}
エクセルオブジェクト
private Workbook wb = null;
Sheet sheet = null;
Cell cell = null;
sheet = this.wb.getSheetAt(0);
Row row = sheet.getRow(1);