Zum Zugriff auf Dokumente und Spreadsheets von OpenOffice (for OASIS Open Document ) ist JOpenDocument (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.
- Nur das Anzeigen von einfachen Dokumenten ist möglich.