# Mit Apache POI Kopfzeilen definieren



## gigaplanet (12. Okt 2010)

Hallo erstmal,

ich lerne seit ca einer Woche nun JAVA und habe mir ein Programm geschrieben mit dem ich EXCEL-Dateien auslesen und schreiben kann. Dies ist alles kein Problem, nur nun würde ich gerne in dem erzeugten Excel-File eine Kopfzeile und eine Fußzeile mit Seitenzahlen definieren. Ist das via Apache möglich und wenn ja wie? 

Wenn es geht bitte einfach beschreiben, bin wie gesagt noch totaler Anfänger

Danke im vorraus...


----------



## michaeldbjava (12. Okt 2010)

Tip, einfach mal auf der Seite stöbern ....;-)

Busy Developers' Guide to HSSF and XSSF Features


```
HSSFWorkbook wb = new HSSFWorkbook();
    HSSFSheet sheet = wb.createSheet("format sheet");
    HSSFFooter footer = sheet.getFooter()

    footer.setRight( "Page " + HSSFFooter.page() + " of " + HSSFFooter.numPages() );



    // Create various cells and rows for spreadsheet.

    FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    wb.write(fileOut);
    fileOut.close();
```


----------



## michaeldbjava (12. Okt 2010)

Headers and Footers

Habe die entscheidene Stelle mal hier rein kopiert ....;-)

```
Example is for headers but applies directly to footers.

    Workbook wb = new HSSFWorkbook();
    Sheet sheet = wb.createSheet("new sheet");

    Header header = sheet.getHeader();
    header.setCenter("Center Header");
    header.setLeft("Left Header");
    header.setRight(HSSFHeader.font("Stencil-Normal", "Italic") +
                    HSSFHeader.fontSize((short) 16) + "Right w/ Stencil-Normal Italic font and size 16");

    FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    wb.write(fileOut);
    fileOut.close();
```


----------



## gigaplanet (12. Okt 2010)

Wow danke schön, das sind mal gute konkrete und schnelle antworten...Bin sehr beeindruckt vom Forum


----------



## gigaplanet (12. Okt 2010)

Kurze Frage noch einmal. ...

Ist es auch möglich nun in die Kopfzeile ein Bild einzufügen?

In eine Zelle kein problem, generell in Swing auch kein Problem.

[Java]
Image logo =new ImageIcon("logo.png").getImage();
footer.setLeft(logo); [/code]

Das liefert mir im Excel Dokument dort aber nur:sun.awt.image.ToolkitImage@1fdc96c


----------



## michaeldbjava (12. Okt 2010)

Hallo, ich weiß nicht ob das auch im Header geht ...

Einfach mal ausprobieren ...


```
Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();

    //add picture data to this workbook.
    InputStream is = new FileInputStream("image1.jpeg");
    byte[] bytes = IOUtils.toByteArray(is);
    int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);
    is.close();
```


----------



## gigaplanet (12. Okt 2010)

Es sieht leider nicht so aus

bei footer.setLeft(); wird ja auch ein String erwartet oder sehe ich das falsch? Aber wie bekomme ich das Bild als String oder sage dem footer das was anderes als ein String darein soll?


----------



## michaeldbjava (12. Okt 2010)

Es scheint so, daß das tatsächlich nicht geht ...;-)

Nabble - POI - User - HSSF workbook print setup margins


----------



## gigaplanet (12. Okt 2010)

Steht da nicht das es vor der 2002 nicht ging? Das bedeutet doch bei 2007 würde es gehen???:L

Und was ist wenn ich das Bild via Base64 String darüber schicke?


----------



## michaeldbjava (12. Okt 2010)

Ich denke eine Kodierung in Base 64 bewirkt lediglich, daß das Image gemäß diesem Algorithmus kodiert wird. Der String wird dann so sehe ich es immer noch als String interpretiert ...

Gruß

Michael


----------



## gigaplanet (12. Okt 2010)

Danke dir aufjeden Fall schonmal für deine Mühe,

also so wie ich das sehe heißt das aufgeben?;(


----------



## AlexSpritze (12. Okt 2010)

Und wenn du eine Excel-Datei mit Bild in der Kopfzeile manuell erzeugst  und mit POI versuchst sie auszulesen, um zu schauen, was dir die Lib da liefert?


----------

