Dieses Schreiben ist mein Code meine Datei zu schreiben:optimiert ods Dateien mit einfacher-odf
SpreadsheetDocument ods = SpreadsheetDocument.newSpreadsheetDocument();
Table table = Table.newTable(ods, 4000, 20, 0, 0);
table.setTableName("foo");
Border border = new Border(Color.BLACK, 1, StyleTypeDefinitions.SupportedLinearMeasure.PT);
Font font = new Font("Arial", FontStyle.BOLD, 7, Color.BLACK);
List<Row> rows = table.getRowList();
for (Row r : rows) {
for (int a = 0; a < 20; a++) {
Cell cell = r.getCellByIndex(a);
cell.setStringValue("Foo " + a);
cell.setBorders(CellBordersType.ALL_FOUR, border);
cell.setCellBackgroundColor(Color.valueOf("#A5A5A5"));
cell.setFont(font);
cell.setHorizontalAlignment(HorizontalAlignmentType.CENTER);
}
}
ods.save("K://foo.ods");
In diesem Code ich den Stil auf der Zellebene eingestellt. Um das Schreiben zu optimieren, möchte ich wissen, ob es eine Möglichkeit gibt, auf Zeilen- oder Tabellenebene zu arbeiten. Oder erstellen Sie einen Stil für Rahmen, Schrift, Größe usw. im Dokument und legen Sie den Stil mit der Funktion setCellStyleName fest. Ich kann so etwas tun?
Der Grund ist, weil ich diesen Fehler:
java.lang.OutOfMemoryError: Java heap space at java.util.ArrayList.iterator(ArrayList.java:814) at sun.nio.ch.WindowsSelectorImpl.updateSelectedKeys(WindowsSelectorImpl.java:496) at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:172) at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87) at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98) at org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1050) at java.lang.Thread.run(Thread.java:745)
Wenn ich das Format (Grenze, Schriftart ...) löschen, kann ich mehr Zeilen schreiben. Wenn ich die content.xml öffne, kann ich sehen, dass ich viele definierte Stile habe, die gleich sind. Ich verwende diese Version:
<dependency>
<groupId>org.apache.odftoolkit</groupId>
<artifactId>simple-odf</artifactId>
<version>0.7-incubating</version>
</dependency>
Nicht mit einfachen ODF, aber Dokument, getOrCreateDocumentStyle. Auch das wiederholte Erstellen neuer Instanzen wie Color.valueOf wirkt sich auf den Speicher aus. –
Haben Sie versucht, dem Programm ein bisschen mehr Speicher zu geben? –
@Joop Eggen Danke für Ihre Infos. Ich definiere eine Farbe einmal außerhalb der Schleife, auf diese Weise Color color = Color.valueOf ("# A5A5A5"); aber ich bekomme den gleichen Fehler. – oscar