POI が激遅くTomcat が停止した時の改修

レコード数、列数の多い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);

コメントを残す