Zum Zugriff auf Dokumente und Spreadsheets von OpenOffice ist http://www.jopendocument.org/ eine GPL-Bibliothek, die das mit einer einfachen API unterstützt. Etwa das laden und verändern von Spreadsheets:
File file = new File( „c:/in.ods“ );
SpreadSheet createFromFile = SpreadSheet.createFromFile( file );
Sheet sheet = createFromFile.getSheet( 0 );
sheet.setValueAt( „Filling test“, 1, 1 );
sheet.getCellAt( „A1“ ).setValue( „On site support“ );
sheet.getCellAt( „I10“ ).setValue( new Date() );
sheet.getCellAt( „F24“ ).setValue( 3 );
File outputFile = new File( „c:/out.ods“ );
sheet.getSpreadSheet().saveAs( outputFile );
Weitere Beispiele gibt http://www.jopendocument.org/documentation.html.
Interessant ein ein purer Java-Viewer, und damit die Möglichkeit in PDF zu exportieren, ohne dass man OO dazu fernsteuern muss.
Beim Testen der SpreadSheet-API sind mir leider einige Nachteile aufgefallen:
- Es gibt keine Named References
- Die API ist sehr Datei-orientiert. Nur im Speicher Dokumente anzulesen und zu verarbeiten ist nicht möglich. Ich sehe erst einmal keine Methode, wie ein Servlet z.B. sich den InputStream auf ein OO-Dokuments holen und als OutputStream an den Client verschicken kann, ohne dass man vorher das OO-Dokument in eine Datei schreibt.
- Soll der eingebauter Viewer verwendet werden, können TIFF-Bilder nicht angezeigt werden.
- GPL könnte für einige Bereiche ein Problem sein. Es werden aber kommerzielle Lizenzen verkauft.