View
217
Download
2
Category
Preview:
Citation preview
1
1
Schreiben von Microsoft Office Dateien mit Java
Dietmar Steinbichler
16.12.2003Schreiben von Microsoft Office Datein mit Java2
Das Apache Jakarta Projekt
Das Apache Jakarta Projekt erzeugt und verwaltet Open Source Projekte, die für Jedermann kostenlos zur Verfügung stehen.Programmiersprache in allen Projekten ist Java.Ein Teilprojekt ist POI.
2
16.12.2003Schreiben von Microsoft Office Datein mit Java3
Das POI Projekt
Das POI Projekt besteht aus Java-APIs zum Erstellen und Bearbeiten von Dateiformaten, die auf dem Microsoft-Dateiformat »OLE-2 Compound Document« beruhen.In diesem Format sind unter anderem die meisten Microsoft Office Dateien, wie zum Beispiel Excel und Word Dateien.
16.12.2003Schreiben von Microsoft Office Datein mit Java4
Formate im POI Projekt
POIFS – POI File SystemHWPF – Horrible Wordpad FormatHSSF – Horrible Spreadsheet FormatHPSF – Horrible Property Set Format
3
16.12.2003Schreiben von Microsoft Office Datein mit Java5
POIFS – Das POI File System
POIFS ist die Java Implementierung des »OLE-2 Compound Document« Formats.Alle APIs im POI Projekt benutzen POIFS in irgendeiner Weise.
16.12.2003Schreiben von Microsoft Office Datein mit Java6
HWPF – Java API zum Zugriff auf Microsoft Word Dateien
HWPF ist noch nicht sehr weit entwickelt, jedoch sind einfache Lese- und Schreibfunktionen bereits implementiert.
4
16.12.2003Schreiben von Microsoft Office Datein mit Java7
HSSF – Java API zum Zugriff auf Microsoft Excel Dateien
HSSF ist der am weitesten entwickelte Teil des POI Projekts.HSSF unterstützt fast alle Operationen mit Excel Tabellen bis auf Makros, Diagramme und PivotTabellen.
16.12.2003Schreiben von Microsoft Office Datein mit Java8
Beispiele
1. Word Dokument mit HWPF lesen und schreiben
2. Excel Datei mit HSSF auslesen3. Excel Datei mit HSSF schreiben
5
16.12.2003Schreiben von Microsoft Office Datein mit Java9
Klassenstruktur HWPF
HWPFDocument
Range
CharacterRun
Dokument
Bereich
Schriftarten/Formate
16.12.2003Schreiben von Microsoft Office Datein mit Java10
HWPF Beispiel
6
16.12.2003Schreiben von Microsoft Office Datein mit Java11
HWPF Beispiel (1)Datei öffnen und Infos auslesen// DokumentHWPFDocument doc = new HWPFDocument(new FileInputStream("doc\\read.doc"));// BereichRange range = doc.getRange();// SchriftartCharacterRun run;
// Anzahl der Zeilenumbrüche ausgebenSystem.out.println("Das Dokument enthält:\t"
+ range.numParagraphs() + " Zeilenumbrüche,");// Anzahl der Abschnitte ausgebenSystem.out.println("\t\t\t" + range.numSections() + " Abschnitte,");// Anzahl der Schrifarten ausgebenSystem.out.println("und\t\t\t" + range.numCharacterRuns()
+ " Schriftarten.");
16.12.2003Schreiben von Microsoft Office Datein mit Java12
HWPF Beispiel (2)Schriftarten abfragen
// Info über Schriftarten ausgebenSystem.out.println("----- Schriftarten -----");
for (int i=0; i<range.numCharacterRuns(); i++) {run = range.getCharacterRun(i);
System.out.print ("Font " + (i+1) + ": ");
System.out.print ("Fontgröße:" + run.getFontSize());
System.out.println(", Zeichenabstand:" + run.getCharacterSpacing());
}
7
16.12.2003Schreiben von Microsoft Office Datein mit Java13
HWPF Beispiel (3)Inhalt ausgeben und ergänzen
// Inhalt ausgeben
String content = range.text();
System.out.println("----- Inhalt: -----");System.out.println(content);
System.out.println("-------------------");
// Ein Paar Worte hinzufügenrange.insertBefore("*** von HWPF eingefügt ***");
16.12.2003Schreiben von Microsoft Office Datein mit Java14
HWPF Beispiel (4)Dokument schreiben und schließen
// Ausgabestream öffnen
OutputStream out = new FileOutputStream("doc\\Write.doc");// Ausgabedokument schreiben
doc.write(out);
// Ausgabestream schließen
out.flush();
out.close();
8
16.12.2003Schreiben von Microsoft Office Datein mit Java15
Klassenstruktur HSSF
HSSFWorkbook
HSSFSheet
HSSFRow
Mappe
Tabelle
Zeile
HSSFCell
ZellformatHSSFCellStyle
Zelle
16.12.2003Schreiben von Microsoft Office Datein mit Java16
HSSF Beispiel – Lesen
9
16.12.2003Schreiben von Microsoft Office Datein mit Java17
HSSF Beispiel – Lesen (1)Excel Mappe öffnen und Objekte erzeugen
// Excel Mappe öffnen
HSSFWorkbook wb = new HSSFWorkbook(
new FileInputStream("doc\\Read.xls"));// Tabelle1 auswählen
HSSFSheet sh = wb.getSheet("Tabelle1");
// Objektreferenz auf Zeile erzeugen
HSSFRow row = null;// Objektreferenz auf Zelle erzeugen
HSSFCell cell = null;
16.12.2003Schreiben von Microsoft Office Datein mit Java18
HSSF Beispiel – Lesen (2)Zelleninhalte ausgeben// Für jede Zeilefor (int i=0; i<=sh.getLastRowNum(); i++) {
// Zeile auswählenrow = sh.getRow(i);// Für jede Zelle in der Zeilefor (int j=0; j<row.getLastCellNum(); j++) {
// Zelle auswählencell = row.getCell((short) j);// Zelleninhalt ausgebenSystem.out.print ("Zelle[" + i + "," + j + "] = " );System.out.println(cell.getStringCellValue());
}}
10
16.12.2003Schreiben von Microsoft Office Datein mit Java19
HSSF Beispiel – Schreiben
16.12.2003Schreiben von Microsoft Office Datein mit Java20
HSSF Beispiel – Schreiben (1)Objekte erzeugen
// Neue Mappe erzeugenHSSFWorkbook wb = new HSSFWorkbook();
// Neue Tabelle erzeugen
HSSFSheet sh = wb.createSheet();// Objektreferenz auf Reihe erzeugen
HSSFRow row = null;
// Objektreferenz auf Zelle erzeugen
HSSFCell cell = null;// Zellformat Objekt erzeugen
HSSFCellStyle csty = wb.createCellStyle();
// Datenformat Objekt erzeugenHSSFDataFormat df = wb.createDataFormat();
11
16.12.2003Schreiben von Microsoft Office Datein mit Java21
HSSF Beispiel – Schreiben (2)Schriftart einstellen// Font-Objekt erzeugenHSSFFont font = wb.createFont();// Schriftgröße auf 12pt einstellenfont.setFontHeightInPoints((short) 12);// Schriftfarbe blaufont.setColor((short)0xC);// Schriftartfont.setFontName("Times New Roman");// Fettfont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// Schriftart auf Zellformat-Objekt anwendencsty.setFont(font);
16.12.2003Schreiben von Microsoft Office Datein mit Java22
HSSF Beispiel – Schreiben (3)Rahmen einstellen
// Rahmen einstellen
csty.setBorderBottom(HSSFCellStyle.BORDER_THIN);csty.setBottomBorderColor(HSSFColor.PINK.index);
csty.setBorderLeft(HSSFCellStyle.BORDER_THICK);
12
16.12.2003Schreiben von Microsoft Office Datein mit Java23
HSSF Beispiel – Schreiben (4)Zellen schreiben// Tabelle mit 30 Zeilen erzeugenfor (short rownum = 0; rownum < 30; rownum++) {
// Zeile erzeugenrow = sh.createRow(rownum);// Für jede Zelle der Reihefor (short cellnum = 0; cellnum < 10; cellnum += 2) {
// String Zelle erzeugencell = row.createCell((short) (cellnum + 1));// Format setzencell.setCellStyle(csty);// String eintragencell.setCellValue( "HSSF Test" );
}}
16.12.2003Schreiben von Microsoft Office Datein mit Java24
HSSF Beispiel – Schreiben (5)Fenster fixieren und Zoom setzen
// Eine Zeile und eine Spalte fixieren
sh.createFreezePane( 1, 1);
// Zoom auf 75% setzen
sh.setZoom(3,4);
13
16.12.2003Schreiben von Microsoft Office Datein mit Java25
HSSF Beispiel – Schreiben (6)Datei schreiben und schließen
// Ausgabedatei ereugen
FileOutputStream out = new FileOutputStream("doc\\Write.xls");
// Mappe schreiben und Datei schließen
wb.write(out);
out.close();
16.12.2003Schreiben von Microsoft Office Datein mit Java26
Schreiben von Microsoft Office Dateien mit Java
http://jakarta.apache.org/poi/
Recommended