Apache POI-Standard-Stil für die Arbeitsmappe
Ich versuche, ändern Sie die Standard-Formatvorlage für die Zelle für eine gesamte Excel-Arbeitsmappe (XSSF
) mit Apache POI
. Dies sollte angewendet werden, um neue Zellen, die ein Benutzer erstellen können (nachdem Sie die Arbeitsmappe gespeichert wurde, indem POI
). Ich bin versucht, dies zu tun, durch aufrufen workbook.getCellStyleAt(0)
-- was ich verstehen, die Standard-Stil für die Arbeitsmappe -- und dann durch ändern dieser Stil zu, was möchte ich für den neuen Standard.
Dies funktioniert, wenn ich lese, in eine bestehende XSLX
- Datei (eine "Vorlage" - Datei) und ändern Sie die Standard-Formatvorlage. Aber wenn ich eine neue XSLX
- Datei von Grund auf, mit POI
es tut nicht Arbeit.
Beim treten durch einen debugger kann ich sehen, dass, wenn man eine "Vorlage" - Datei, es ist ein "Thema" zugeordnet Format der Zelle mit dem index 0 (wahrscheinlich, weil die Vorlage-Datei ursprünglich erstellt mit Excel). Aber beim erstellen einer Datei von Grund auf neu (mit POI
), Format der Zelle mit dem index 0 muss ein null-Thema. (Dies könnte ein Faktor sein, warum das funktioniert mit einem Konzept, aber nicht den anderen.)
Irgendwelche Vorschläge auf, wie zuverlässig ändern Sie die Standard-Formatvorlage für die Zelle für eine Arbeitsmappe ( XSSF
), unabhängig davon, wie die Arbeitsmappe ursprünglich erstellt wurde? Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei Möglichkeiten, dies zu erreichen mit XSSF.
Zunächst: Wenn Sie wählen Sie alle Zellen in einem XSSF Arbeitsblatt in Excel, und wenden Sie einen Stil, der zu Ihnen, dann ein
cols
- element Hinzugefügt, um das Blatt mit einer style-definition, die für alle Spalten:Erreicht werden kann dies mit apache-poi-wie so:
Dies ändert die Standard-Formatvorlage für die Zelle von allen Zellen in dem Blatt.
Zweite: Sie können ändern Sie die style-Definitionen des normalen Zell-Stil, etwa so:
Dies ändert die Standard-Formatvorlage für die Zelle von allen Zellen in der gesamten Arbeitsmappe.
XML in
styles.xml
zeigt:Als Sie sehen, die normale Zelle-Stil ist das erste in
cellStyles
. Es bezieht sich aufxfId="0"
bezieht sich aufnumFmtId="0"
fontId="0"
fillId="0"
borderId="0"
. Das bedeutet, dass die ersten Definitionen von Zahlenformat, schriftart, füllen format und Rahmen verwendet wird, in der normalen Zelle-Stil.