最新のApache poiを使用して、30列と100万レコードの大きなExcel 2010を作成しようとしています。このリンクに記載されているとおりに作成しています http://svn.Apache.org/repos/asf/poi/trunk/src/examples/src/org/Apache/poi/xssf/usermodel/examples/BigGridDemo。 Java 。ただし、列幅を列ヘッダーのテキストサイズと同じにする必要があります。しかし、次のコードでExcelを作成した後にこれをしているとき
for (int x = 0; x < sheet.getRow(0).getPhysicalNumberOfCells(); x++) {
sheet.setColumnWidth(x, 20*256);
}
膨大な時間がかかり、5GBのヒープサイズでもメモリ不足になります。
ありがとう
羊
ヘッダーのみが行の最大セル数を提供できるため、最初の行またはヘッダーを選択します。
HSSFRow row = wb.getSheetAt(0).getRow(0);
次に、その行の各列でautoSizeColumn
を使用します
for(int colNum = 0; colNum<row.getLastCellNum();colNum++)
wb.getSheetAt(0).autoSizeColumn(colNum);
これにより、ヘッダーの幅と同じ列幅が設定されます。
Sxssfの使用を検討することもお勧めします。 xml形式を使用してExcelに読み込みます。これははるかに高速で、大きなレポートやグリッドを作成するためのより良い方法です。 xssfの自動サイズ調整機能は、デフォルトでは時間がかかりすぎます。
sheet.autoSizeColumn(columnNumber)は機能します。これにより、列のサイズがセルの最大長に変更されます。