ich erzeuge mir mit den Apache POI Klassen ein Excel-Dokument und übergebe dies an eine andere Klasse als byte Array (ByteArrayDataSource ). Als Rückgabeparameter der POI-Klasse erhalte ich einen FileOutputStream. Im Moment schreibe ich diesen auf die Festplatte und lese diesen dann über eine FileInputStream wieder ein. Siehe hier:
Code:
HSSFWorkbook excelObj;
.
File f = new File("c:\temp\anlage.xls");
FileOutputStream fileOut = new FileOutputStream(f);
excelObj.write(fileOut);
fileOut.close();
FileInputStream in = new FileInputStream(file);
BufferedInputStream reader = new BufferedInputStream(in, 4096);
int lenth = reader.available();
byte[] buf = new byte[lenth];
reader.read(buf, 0, lenth);
reader.close();
in.close();
ByteArrayDataSource bufSource = new ByteArrayDataSource(buf, "application/msexcel");
Geht das ganze auch ohne daß ich den Stream auf die Festplatte rauschreiben muß ?
Also quasi direkt vom FileOutputStream zum FileInputStream (oder besser als byte[]).
FileOutputStream fileOut = new FileOutputStream(f);
excelObj.write(fileOut);
fileOut.close();
nun machst du darauf
ByteArrayOutputStream b= new ByteArrayOutputStream();
excelObj.write(b);
b.close();
so in etwa, vielleicht brauchts kein close() und noch ähnliche Änderungen,
schaue bei google nach Beispielen für ByteArrayOutputStream falls dir noch unbekannt
> Wie komme ich damit zu einem BufferedInputStream
brauchst du nicht, ByteArrayOutputStream liefert ein byte[], siehe API,
BufferedInputStream akzeptiert aber vielleicht auch ByteArrayOutputStream , siehe API
ok, komplette Antworten wären vielleicht schöner, hier gibts erstmal nur Hinweise
Das war die Lösung !
Ich werde mich bemühen meine Fragen genauer zu formulieren (wegen Rückgabewert), aber ich dachte man sieht es anhand von dem Beispielcode was ich meine ;-)
Ansonsten ist das mit Java so eine Sache, da programmiere ich MQSeries- und SAP-Anbindungen (in diesem Fall rufe ich einen Webservice zu einem Dokumenten Managment System auf), aber ich bekomme keine ByteArray hin In anderen Programmiersprachen gibt es nur Datentypen wie String, File und Character (usw.), den Rest programmiert man selber