Apache POI-XSSF
Microsoft® Excel XLSX ファイル用のオープン ソース Java API
Java ライブラリを使用して、Excel XLSX スプレッドシートを作成、編集、および CSV および HTML ファイル形式に変換します。
Apache POI-XSSF とは何ですか?
Apache POI-XSSF は、Excel 2007 XLSX ファイル形式の純粋な Java 実装です。 API は、Excel XLSX ファイルを作成、読み取り、変更、および書き込むための手順を提供します。特別なニーズを持つ人のための低レベルの構造を提供します。また、効率的な読み取り専用アクセスのためのイベント モデル API と、XLSX ファイルの作成、読み取り、および変更のための完全なユーザー モデル API も提供します。 Apache POI-XSSF は、シート、数式の操作、色と境界線の塗りつぶしによるセル スタイルの作成、フォント、ヘッダーとフッター、形状、データ検証、画像、ハイパーリンクなど、追加の Excel 機能を優れたサポートを提供します。
Apache POI XSSF の使用を開始する
まず、システムに Java Development Kit (JDK) をインストールする必要があります。既にお持ちの場合は、Apache POI の ダウンロード ページに進み、最新の安定版リリースをアーカイブから入手してください。必要なライブラリーを Java プログラムにリンクできる任意のディレクトリーに ZIP ファイルの内容を抽出します。それだけです!
Maven ベースの Java プロジェクトで Apache POI を参照するのはさらに簡単です。必要なのは、pom.xml に次の依存関係を追加し、IDE が Apache POI Jar ファイルを取得して参照できるようにすることだけです。
Apache POI Maven の依存関係
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.0</version>
</dependency>
Java API を使用して大きな Excel スプレッドシートを作成する
Apache POI XSSF は、MS Excel ファイルへの大量のデータ書き込みを処理するために、SXSSF API を介してメモリ フットプリントを低く抑えます。これにより、一度に行の構成可能な部分のみがメモリに保持されるため、メモリを使い果たすことなく非常に大きなファイルを書き込むことができます。 POI-SXSSF は、スライディング ウィンドウ内の行へのアクセスを制限することでメモリ フットプリントを低く抑えますが、XSSF はドキュメント内のすべての行へのアクセスを提供します。ウィンドウに表示されなくなった古い行は、ディスクに書き込まれるため、アクセスできなくなります。次の手順を使用して、Java で大きな Excel ファイルを作成できます。
Java を使用して大きな Excel ファイルを作成する
- 新しい SXSSFWorkbook を作成し、メモリに 100 行を保持します。超過した行はディスクにフラッシュされます
- createSheet() メソッドを使用して新しいワークシートを作成する
- 内部で createRow()、createCell()、および setCellValue("Your data") とネストされたループを使用して、2000 行と 2000 セルにデータを挿入します。
- FileOutputStream() を使用してファイルを保存し、出力ファイル名を渡します
- SXSSFWorkbook.Write() メソッドを使用してファイルに書き込み、FileOutputStream をパラメーターとして渡します。
大きな Excel ファイルを作成する
// create a new SXSSFWorkbook
SXSSFWorkbook wb = new SXSSFWorkbook(100);
Sheet sh = wb.createSheet();
// insert 2000 rows
for(int rownum = 0; rownum < 2000; rownum++){
Row row = sh.createRow(rownum);
// insert data in 20000 cells
for(int cellnum = 0; cellnum < 10; cellnum++){
Cell cell = row.createCell(cellnum);
cell.setCellValue("Row Number: "+ rownum + " Cell Number: "+ cellnum);
}
}
// save file
FileOutputStream out = new FileOutputStream("LargeDcument.xlsx");
wb.write(out);
out.close();
Excel ワークブックの作成とシートの追加のための Java API
Apache POI XSSF を使用すると、コンピューター プログラマーは新しい Excel ワークブックを XLSX ファイル形式で作成できます。開発者がワークブックを作成すると、ワークブックの既存のインスタンスからワークシートが作成され、新しく作成されたシートがワークブックに順番に自動的に追加されます。
Excel ワークブックの作成とシートの追加
// create a new XLSX file
Workbook workbook = new XSSFWorkbook();
OutputStream outputStream = new FileOutputStream("CreateXlsx.xlsx");
// create a new sheet
Sheet sheet = workbook.createSheet("Apache POI XSSF");
// create a new sheet
Row row = sheet.createRow(1);
// create a new cell
Cell cell = row.createCell(1);
// set cell value
cell.setCellValue("File Format Developer Guide");
// save file
workbook.write(outputStream);
Excel スプレッドシートを CSV およびその他のファイル形式に変換する
Java 開発者とプログラマーは、Apache POI XSSF API を使用して Excel スプレッドシートを CSV ファイル形式に簡単に変換できます。 CSV は Comma-Separated-Values の略で、多くのアプリケーション間でデータを交換するために使用される非常に一般的な形式です。まず、開発者は Apache POI XSSF API を使用して入力 XLS ファイルを読み取り、抽出した情報を CSV ファイルに書き込む必要があります。
XLSX を CSV に変換する
// Open and existing XLSX file
FileInputStream fileInStream = new FileInputStream("LargeDocument.xlsx");
XSSFWorkbook workBook = new XSSFWorkbook(fileInStream);
XSSFSheet selSheet = workBook.getSheetAt(0);
// Loop through all the rows
Iterator rowIterator = selSheet.iterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
// Loop through all rows and add ","
Iterator cellIterator = row.cellIterator();
StringBuffer stringBuffer = new StringBuffer();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
if (stringBuffer.length() != 0) {
stringBuffer.append(",");
}
stringBuffer.append(cell.getStringCellValue());
}
System.out.println(stringBuffer.toString());
}
workBook.close();
ヘッダーとフッターの XSSF 拡張
Apache POI XSSF には、最初のページのヘッダーとフッター、および偶数/奇数のヘッダーとフッターを処理する機能があります。ヘッダーとフッターは、Excel スプレッドシートの非常に重要な部分です。通常、日付、ページ番号、著者名、脚注などの追加情報が含まれており、長いドキュメントを整理して読みやすくするのに役立ちます。すべてのヘッダー/フッター プロパティ フラグは XSSF で処理できます。奇数のヘッダーとフッターは、デフォルトのヘッダーとフッターです。これは、最初のページのヘッダーまたは偶数ページのヘッダーを表示しないすべてのページに表示されます。
Excel XLSX ファイル内のセルの結合とテキスト抽出
Apache POI XSSF は、Java プログラマーが複数のセルを Excel スプレッドシート内の 1 つのセルに結合できるようにする機能を提供します。これには、セル インデックスを引数として取り、セルを 1 つの大きなセルに結合するメソッドが含まれています。最も要求の厳しい機能の 1 つは、XLSX ファイルからテキストを抽出し、必要に応じて使用する機能です。 Apache POI は、プロジェクトがサポートするすべてのファイル形式に対して基本的なテキスト抽出を提供しています。リッチ テキスト抽出 (書式設定やスタイリングなど) を含む高度なテキスト抽出のニーズに対して、Apache POI は Apache Tika と緊密に連携して、プロジェクトでサポートされているすべてのファイル形式に対して POI を利用した Tika パーサーを提供します。