top / index / prev / next / target / source

2018-04-18 diary: [Java][JakartaPOI] 大きな Excel ブックを Apache POI で作成

いがぴょん画像(小) 日記形式でつづる いがぴょんコラム ウェブページです。

[Java][JakartaPOI] 大きな Excel ブックを Apache POI で作成

大きな Excel ブックを Apache POI を用いて作成するシンプルなサンプルをメモします。

完全なソースコードは以下にあります。

ポイントとなるソースコードは以下の箇所です。

Maven の依存関係、つまり pom.xml 記述に以下を追加します。

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.17</version>
        </dependency>

そして、POI を利用する Java ソースコードを以下のように記述します。

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.xssf.streaming.SXSSFWorkbook;

        try (SXSSFWorkbook workbook = new SXSSFWorkbook(10)) {
            for (int indexSheet = 0; indexSheet < 4; indexSheet++) {
                final Sheet sheet = workbook.createSheet();

                for (int indexColumn = 0; indexColumn < 20; indexColumn++) {
                    sheet.setColumnWidth(indexColumn, 256 * 3);
                }

                for (int indexRow = 0; indexRow < 100; indexRow++) {
                    final Row row = sheet.createRow(indexRow);
                    for (int indexColumn = 0; indexColumn < 10; indexColumn++) {
                        final Cell cell = row.createCell(indexColumn);
                        cell.setCellValue("Data of (" + indexColumn + ":" + indexRow + ")");
                    }
                }
            }

            try (BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("./target/aout.xlsx"))) {
                workbook.write(out);
            }

            workbook.dispose();
        }

POI の他のコーディング API と異なり、この記法は より大きな Excel ファイルの作成が可能です。メモリ効率よく Excel ブックを作成できるのは便利ですね。

関連する日記

Last modified: $Date: 2018-04-18 $

登場キーワード


この日記について