2013-11-25 5 views
11

Ich versuche, eine große Excel 2010 mit 30 Spalten und 1 Million Datensätze mit Apache Poi neuesten erstellen. Ich erstelle wie in diesem Link beschrieben http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BigGridDemo.java. aber ich möchte, dass die Spaltenbreite der Spaltentitel-Textgröße entspricht. aber wenn ich diese nach machte mit Excel zu schaffen Code folgendenApache Poi Excel große Auto Spalte Breite

for (int x = 0; x < sheet.getRow(0).getPhysicalNumberOfCells(); x++) { 
      sheet.setColumnWidth(x, 20*256); 
     } 

es ist eine große Zeit zu nehmen, und sogar mit 5 GB Speichergröße erhalte ich aus der Erinnerung.

dank

ram

+0

Warum verwenden Sie nicht SXSSF? Das ist der neue Ersatz für die Demo BigGrid Zeug – Gagravarr

+0

ja, gesehen SXSSF wird in zukünftigen Projekt zu verwenden ..... später wissen, –

+0

bin mit dem gleichen Problem! Was hast du schließlich gemacht? –

Antwort

29

Wählen Sie zuerst die erste Zeile oder Header, da nur Header Sie die maximale Anzahl von Zellen in einer Reihe geben kann.

HSSFRow row = wb.getSheetAt(0).getRow(0); 

Dann autoSizeColumn auf jede Spalte dieser Zeile verwenden

for(int colNum = 0; colNum<row.getLastCellNum();colNum++) 
    wb.getSheetAt(0).autoSizeColumn(colNum); 

Dies wird die Spaltenbreite gleich der Breite der Kopfzeile gesetzt.

4

Ich würde auch vorschlagen, dass Sie mit sxssf betrachten. Es verwendet ein XML-Format, um es in Excel zu laden. Dies ist viel schneller und eine bessere Möglichkeit, große Berichte oder Raster zu erstellen. Die automatische Größenanpassung in xssf dauert standardmäßig zu lange.

3

sheet.autoSizeColumn (columnNumber) funktioniert. Dadurch wird die Größe der Spalte auf die größte Zellenlänge geändert.