13

Click here to load reader

Schreiben von Microsoft Office Dateien mit Javakeller/Downloads/JarkataPOI.pdf · 4 7 Schreiben von Microsoft Office Datein mit Java 16.12.2003 HSSF – Java API zum Zugriff auf Microsoft

  • Upload
    haphuc

  • View
    217

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Schreiben von Microsoft Office Dateien mit Javakeller/Downloads/JarkataPOI.pdf · 4 7 Schreiben von Microsoft Office Datein mit Java 16.12.2003 HSSF – Java API zum Zugriff auf Microsoft

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.

Page 2: Schreiben von Microsoft Office Dateien mit Javakeller/Downloads/JarkataPOI.pdf · 4 7 Schreiben von Microsoft Office Datein mit Java 16.12.2003 HSSF – Java API zum Zugriff auf Microsoft

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

Page 3: Schreiben von Microsoft Office Dateien mit Javakeller/Downloads/JarkataPOI.pdf · 4 7 Schreiben von Microsoft Office Datein mit Java 16.12.2003 HSSF – Java API zum Zugriff auf Microsoft

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.

Page 4: Schreiben von Microsoft Office Dateien mit Javakeller/Downloads/JarkataPOI.pdf · 4 7 Schreiben von Microsoft Office Datein mit Java 16.12.2003 HSSF – Java API zum Zugriff auf Microsoft

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

Page 5: Schreiben von Microsoft Office Dateien mit Javakeller/Downloads/JarkataPOI.pdf · 4 7 Schreiben von Microsoft Office Datein mit Java 16.12.2003 HSSF – Java API zum Zugriff auf Microsoft

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

Page 6: Schreiben von Microsoft Office Dateien mit Javakeller/Downloads/JarkataPOI.pdf · 4 7 Schreiben von Microsoft Office Datein mit Java 16.12.2003 HSSF – Java API zum Zugriff auf Microsoft

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());

}

Page 7: Schreiben von Microsoft Office Dateien mit Javakeller/Downloads/JarkataPOI.pdf · 4 7 Schreiben von Microsoft Office Datein mit Java 16.12.2003 HSSF – Java API zum Zugriff auf Microsoft

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();

Page 8: Schreiben von Microsoft Office Dateien mit Javakeller/Downloads/JarkataPOI.pdf · 4 7 Schreiben von Microsoft Office Datein mit Java 16.12.2003 HSSF – Java API zum Zugriff auf Microsoft

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

Page 9: Schreiben von Microsoft Office Dateien mit Javakeller/Downloads/JarkataPOI.pdf · 4 7 Schreiben von Microsoft Office Datein mit Java 16.12.2003 HSSF – Java API zum Zugriff auf Microsoft

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());

}}

Page 10: Schreiben von Microsoft Office Dateien mit Javakeller/Downloads/JarkataPOI.pdf · 4 7 Schreiben von Microsoft Office Datein mit Java 16.12.2003 HSSF – Java API zum Zugriff auf Microsoft

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();

Page 11: Schreiben von Microsoft Office Dateien mit Javakeller/Downloads/JarkataPOI.pdf · 4 7 Schreiben von Microsoft Office Datein mit Java 16.12.2003 HSSF – Java API zum Zugriff auf Microsoft

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);

Page 12: Schreiben von Microsoft Office Dateien mit Javakeller/Downloads/JarkataPOI.pdf · 4 7 Schreiben von Microsoft Office Datein mit Java 16.12.2003 HSSF – Java API zum Zugriff auf Microsoft

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);

Page 13: Schreiben von Microsoft Office Dateien mit Javakeller/Downloads/JarkataPOI.pdf · 4 7 Schreiben von Microsoft Office Datein mit Java 16.12.2003 HSSF – Java API zum Zugriff auf Microsoft

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/