Apache POI für Excel: Den Zellentyp für eine ganze Spalte auf "text" setzen

8

Ich muss eine .xls (Excel) -Datei generieren, indem ich die Java-Bibliothek Apache POI für Tabellenkalkulationen verwende.

Die Datei enthält eine Liste von Telefonnummern in Spalte A, formatiert als "0221 ...." oder "+49221 ..." - so interpretiert Excel sie standardmäßig als numerische Zellen. Das ist schlecht, weil die führende 0 oder + abgeschnitten wird.

Um das Problem zu lösen, kann ich cell.setCellType(Cell.CELL_TYPE_STRING) verwenden, was gut funktioniert, aber nur für die spezifischen Zellen, für die ich dies eingestellt habe.

Wie kann ich diese Einstellung für die gesamte Spalte anwenden (d. h. auch für alle übrigen Zellen, in denen der Benutzer zusätzliche Telefonnummern eingeben wird)?

In Excel ist dies möglich : Auswählen der gesamten Spalte und Anwenden des Zelltyps (die Einstellung bleibt beim Speichern / Laden der Datei erhalten.)

Aber ich kann nicht die richtige Methode für POI finden.

  • Zuerst habe ich angenommen, es sollte so etwas wie sheet.setDefaultCellType(int colNum) sein. Aber ich kann so etwas nicht finden (wahrscheinlich bin ich nur blind? Es gibt viele ähnliche Methoden in der Bibliothek zum Anwenden von Textstilen wie" align center "etc.)
  • Dann dachte ich: Vielleicht kann es nur auf NamedRange oder etwas Ähnliches angewendet werden, aber ich habe es nicht geschafft, herauszufinden, wie das funktioniert ...
Chris Lercher 28.06.2011, 16:42
quelle

3 Antworten

10

Wird diese Hilfe?

  

Indem Sie ein Datenformat mit dem @ -Symbol erstellen und dieses in einem CellStyle verwenden   Objekt, das dann an die Methode setDefaultColumnStyle () übergeben wird, war es   Es ist möglich, den Standarddatentyp der Spalte auf Text zu setzen.   Ich habe nicht weiter experimentiert, vermute aber, dass es möglich wäre   Ähnliches gilt für andere Stilobjekte, für die der Standardtyp festgelegt werden soll   numerisch oder sogar ein benutzerdefiniertes Format wie Währung.

    
Vlad 01.08.2011, 12:42
quelle
16

Hier ist ein Beispielcode, der von Vlads Antwort inspiriert wurde:

%Vor%

Der obige Code legt den Standardstil für die erste Spalte von Arbeitsblatt auf TEXT fest.

Danke, Vlad!

    
jahroy 25.05.2013 01:36
quelle
0

Vlad: Das hat das meiste Problem gelöst. Ich fand, dass alle leeren Zeilen so formatiert waren, wie ich sie haben wollte. Zeilen, in denen ich erste Nullen hatte, sahen aus und funktionierten gut. Wenn ich jedoch einen bereits vorhandenen Wert mit einem anderen Wert, beginnend mit Null, ändern musste, verschwanden die Nullen. Daher empfehle ich, Code hinzuzufügen, wenn Sie den Wert in der Zelle erstellen, um den setCellStyle auf Text zurückzusetzen. Hier sind einige Schnipsel:   method public Zelle createCell (Zeile r !, BBjNumber-Zelle, BBjString-Wert!)

%Vor%

methodret c!

%Vor%

methodend

Dies kann einigen anderen allein bei der Suche nach anfänglichen Nullen helfen. Danke für die Veröffentlichung. Alex

    
alex robkin 03.04.2015 15:36
quelle

Tags und Links