Schreiben von Microsoft Office Dateien mit Java Das Apache

Werbung
Schreiben von Microsoft Office
Dateien mit Java
Dietmar Steinbichler
1
Das Apache Jakarta Projekt
z
z
z
2
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.
Schreiben von Microsoft Office Datein mit Java
16.12.2003
1
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.
3
Schreiben von Microsoft Office Datein mit Java
16.12.2003
Formate im POI Projekt
z
z
z
z
4
POIFS –
HWPF –
HSSF –
HPSF –
POI File System
Horrible Wordpad Format
Horrible Spreadsheet Format
Horrible Property Set Format
Schreiben von Microsoft Office Datein mit Java
16.12.2003
2
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.
5
Schreiben von Microsoft Office Datein mit Java
16.12.2003
HWPF – Java API zum Zugriff auf
Microsoft Word Dateien
HWPF ist noch nicht sehr weit entwickelt, jedoch
sind einfache Lese- und Schreibfunktionen
bereits implementiert.
6
Schreiben von Microsoft Office Datein mit Java
16.12.2003
3
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 Pivot
Tabellen.
7
Schreiben von Microsoft Office Datein mit Java
16.12.2003
Beispiele
1.
2.
3.
8
Word Dokument mit HWPF lesen und
schreiben
Excel Datei mit HSSF auslesen
Excel Datei mit HSSF schreiben
Schreiben von Microsoft Office Datein mit Java
16.12.2003
4
Klassenstruktur HWPF
HWPFDocument
Range
CharacterRun
9
Schreiben von Microsoft Office Datein mit Java
Dokument
Bereich
Schriftarten/Formate
16.12.2003
HWPF Beispiel
10
Schreiben von Microsoft Office Datein mit Java
16.12.2003
5
HWPF Beispiel (1)
Datei öffnen und Infos auslesen
// Dokument
HWPFDocument doc = new HWPFDocument(new FileInputStream("doc\\read.doc"));
// Bereich
Range range = doc.getRange();
// Schriftart
CharacterRun run;
// Anzahl der Zeilenumbrüche ausgeben
System.out.println("Das Dokument enthält:\t"
+ range.numParagraphs() + " Zeilenumbrüche,");
// Anzahl der Abschnitte ausgeben
System.out.println("\t\t\t" + range.numSections() + " Abschnitte,");
// Anzahl der Schrifarten ausgeben
System.out.println("und\t\t\t" + range.numCharacterRuns()
+ " Schriftarten.");
11
Schreiben von Microsoft Office Datein mit Java
16.12.2003
HWPF Beispiel (2)
Schriftarten abfragen
// Info über Schriftarten ausgeben
System.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());
}
12
Schreiben von Microsoft Office Datein mit Java
16.12.2003
6
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ügen
range.insertBefore("*** von HWPF eingefügt ***");
13
Schreiben von Microsoft Office Datein mit Java
16.12.2003
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();
14
Schreiben von Microsoft Office Datein mit Java
16.12.2003
7
Klassenstruktur HSSF
HSSFWorkbook
Mappe
HSSFSheet
Tabelle
HSSFRow
Zeile
HSSFCell
Zelle
HSSFCellStyle
15
Zellformat
Schreiben von Microsoft Office Datein mit Java
16.12.2003
HSSF Beispiel – Lesen
16
Schreiben von Microsoft Office Datein mit Java
16.12.2003
8
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;
17
Schreiben von Microsoft Office Datein mit Java
16.12.2003
HSSF Beispiel – Lesen (2)
Zelleninhalte ausgeben
// Für jede Zeile
for (int i=0; i<=sh.getLastRowNum(); i++) {
// Zeile auswählen
row = sh.getRow(i);
// Für jede Zelle in der Zeile
for (int j=0; j<row.getLastCellNum(); j++) {
// Zelle auswählen
cell = row.getCell((short) j);
// Zelleninhalt ausgeben
System.out.print ("Zelle[" + i + "," + j + "] = " );
System.out.println(cell.getStringCellValue());
}
}
18
Schreiben von Microsoft Office Datein mit Java
16.12.2003
9
HSSF Beispiel – Schreiben
19
Schreiben von Microsoft Office Datein mit Java
16.12.2003
HSSF Beispiel – Schreiben (1)
Objekte erzeugen
// Neue Mappe erzeugen
HSSFWorkbook 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 erzeugen
HSSFDataFormat df = wb.createDataFormat();
20
Schreiben von Microsoft Office Datein mit Java
16.12.2003
10
HSSF Beispiel – Schreiben (2)
Schriftart einstellen
// Font-Objekt erzeugen
HSSFFont font = wb.createFont();
// Schriftgröße auf 12pt einstellen
font.setFontHeightInPoints((short) 12);
// Schriftfarbe blau
font.setColor((short)0xC);
// Schriftart
font.setFontName("Times New Roman");
// Fett
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// Schriftart auf Zellformat-Objekt anwenden
csty.setFont(font);
21
Schreiben von Microsoft Office Datein mit Java
16.12.2003
HSSF Beispiel – Schreiben (3)
Rahmen einstellen
// Rahmen einstellen
csty.setBorderBottom(HSSFCellStyle.BORDER_THIN);
csty.setBottomBorderColor(HSSFColor.PINK.index);
csty.setBorderLeft(HSSFCellStyle.BORDER_THICK);
22
Schreiben von Microsoft Office Datein mit Java
16.12.2003
11
HSSF Beispiel – Schreiben (4)
Zellen schreiben
// Tabelle mit 30 Zeilen erzeugen
for (short rownum = 0; rownum < 30; rownum++) {
// Zeile erzeugen
row = sh.createRow(rownum);
// Für jede Zelle der Reihe
for (short cellnum = 0; cellnum < 10; cellnum += 2) {
// String Zelle erzeugen
cell = row.createCell((short) (cellnum + 1));
// Format setzen
cell.setCellStyle(csty);
// String eintragen
cell.setCellValue( "HSSF Test" );
}
}
23
Schreiben von Microsoft Office Datein mit Java
16.12.2003
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);
24
Schreiben von Microsoft Office Datein mit Java
16.12.2003
12
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();
25
Schreiben von Microsoft Office Datein mit Java
16.12.2003
Schreiben von Microsoft Office
Dateien mit Java
http://jakarta.apache.org/poi/
26
Schreiben von Microsoft Office Datein mit Java
16.12.2003
13
Herunterladen