Bild mit Javacode laden

Hallo zusammen,

ich habe im Moment das Problem, dass ich einen Report in Excel aus Java heraus erstellen soll… das Template sieht supi aus und hat auch allen Code drin…
Wenn ich dann meinen Javacode ausführe, knallt es immer, sobald ich das Dest-File aufrufe… da rotzt mir Excel immer ab und behauptet, dass das Dokument beschädigt ist… (schreibt aber trotzdem, obwohl behauptet wurde, dass es nicht ging…)
Naja… nach längerem Suchen habe ich herausgefunden, dass mit das Bild im Temp File alles zerhaut…
Deshalb meine Frage…

Wie bekomme ich ein Bild mit Java in nen Excel File geschoben, ohne dass ich auf JavaScript, oder sonstige ähnliche Zwischenlösungen zurückgreifen muss…?
Gibt es dafür einen Variablentyp und wenn ja, wie bekomm ich da dann das Bild rein (das im Übrigen auf einem Server liegt, wobei sich die Adresse, Name usw nicht ändert…)

Schonmal Danke für eure Tipps…

Gruß Micha

Hallo,

Wie bekomme ich ein Bild mit Java in nen Excel File geschoben,
ohne dass ich auf JavaScript, oder sonstige ähnliche
Zwischenlösungen zurückgreifen muss…?

Ich gehe davon aus, dass du POI benutzt, dann hilft dir dieser Link evlt. weiter: http://poi.apache.org/hssf/quick-guide.html#Images

Gruß
Heavy

Hy Heavy,

Ja… ich nutze POI…
Aber bin damit noch nicht so ganz warm geworden…
Liegt wohl daran, dass das neu ist für mich…

Kann ich das Bild nicht auch irgendwie in eine Klasse packen, damit ich es nur noch auslesen muss…??

Gruß Micha

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Ja… ich nutze POI…
Aber bin damit noch nicht so ganz warm geworden…
Liegt wohl daran, dass das neu ist für mich…

Die Doku ist etwas dürftig, und die unterstützung für Images wohl auch noch recht neu.

Hier mal ein Quick & Dirty Beispiel, das bei mir funktioniert (POI 3.0.1):

 HSSFWorkbook wb = new HSSFWorkbook();
 HSSFSheet sheet = wb.createSheet("Image");
 HSSFPatriarch patriarch = sheet.createDrawingPatriarch();

 HSSFClientAnchor anchor; 
 anchor = new HSSFClientAnchor(0,0,0,255,(short)1,1,(short)15,35);
 anchor.setAnchorType( 2 );

 File pictureFile = new File("example.png");
 byte[] picData = new byte[(int)pictureFile.length()];
 FileInputStream fis = new FileInputStream(pictureFile);
 fis.read(picData, 0, picData.length);
 fis.close();

 int index = wb.addPicture(picData, HSSFWorkbook.PICTURE\_TYPE\_PNG);
 System.out.println("Index: " + index);
 patriarch.createPicture(anchor, index);

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

Gruß
Heavy

Hy…

Schonmal danke für q&d… :smile:
so wie ich den Code verstanden habe, muss ich dem Ding also nur sagen, welches Bild es zu laden hat…?!
Wie kann ich dem denn dann sagen, dass das Bild genau an der und der Stelle aufschlagen soll…?
Genauso wie mit den restlichen Variablen innerhalb vom Excel also so ala {ausgabe.bild} oder wie…?

Gruß Micha

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hy…

Schonmal danke für q&d… :smile:
so wie ich den Code verstanden habe, muss ich dem Ding also
nur sagen, welches Bild es zu laden hat…?!

Dem Workbook wird das Bild als byte-Array hinzugefügt, welches man per FileInputStream oder auch z.B. über eine URL erhalten kann.

Wie kann ich dem denn dann sagen, dass das Bild genau an der
und der Stelle aufschlagen soll…?

Die Position wird über das Anchor Objekt definiert

new HSSFClientAnchor(0,0,0,255,(short)1,1,(short)15,35);

siehe http://poi.apache.org/apidocs/org/apache/poi/hssf/us…

Gruß
Heavy