私は公式ユーザーとしては初めてです。いつもここで答えを見つけていましたが、今質問しなければなりません。
私は最後の apache-poi 3.8 リリース (2012/03/26 から) を使用しており、大量のデータ (1000 列と 10,000 行を超える) を 1 つだけ含む複数のシートで単一のファイルを操作する必要があります。
大きなシートに列を追加するだけで済みます。したがって、現在存在するツールでは、SAX を使用して読み取り、SXSSF を使用して書き直す必要があります。
Excel ファイルは、シートごとに異なるスタイルと画像で事前にフォーマットされているため、大きなシートなしでファイルのコピーを作成できると便利です。
私の質問があります: 解析せずに (入力ストリームから) SAX を使用してシートのコピーを作成するにはどうすればよいですか? ここのようにしようとしましたが、フィールドsheets
のXSSFWorkbook
可視性は非公開に設定されています。
素晴らしいことはSXSSFWriter.SheetIterator
、POI 開発者の将来の計画にある場合、そのようなものがあることです。
読んでくれてありがとう、
アーサー
**更新* *
ファイルが大きすぎて、一般的な XSSFWorkbook として開くことができません (OutOfMemoryException)。InputStream から XSSFSheet を作成することは可能でしょうか? 次のように:
XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) xssfReader
.getSheetsData();
int index = 0;
while (iter.hasNext()) {
InputStream stream = iter.next();
String sheetName = iter.getSheetName();
if (!sheetName.equalsIgnoreCase("BigSheetThatIDontWant")) {
Sheet newSheet = new XSSFSheet(stream);
stream.close();
}
++index;
}
ご回答ありがとうございます。