POI Einlesen Excel Workbook aus BLOB oder von URL anstatt aus Filesystem ?

astramare

Mitglied
hallo ,
ich bin dabei, mich in Java einzulesen,
habe eine konkrete Aufgabenstellung bzgl. dem Auslesen von Excel-Daten ( über POI )

Frage:

wie ich es verstehe, wird normalerweise ein Excel Workbook aus dem FileSystem geholt
und dann geöffnet

in etwa so:

POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(filename));
HSSFWorkbook hssfworkbook = new HSSFWorkbook(fs);


ich habe jetzt jedoch den Fall, dass mir die Exceldatei per URL oder auch als BLOB ( Oracle )
zur Verfügung steht,

welche Möglichkeit habe ich hier, ( per java & POI ) die Daten anzusprechen und auszulesen ?

Danke
 
steht doch quasi da,
> new FileInputStream(filename)

hier kann offensichtlich ein beliebiger Stream stehen, hauptsache er liefert bits und bytes,
für DB oder Web oder sonst einer bekannten Quelle sollten die Daten eh schon auf allgemein bekannten Wegen per Stream ankommen,
ansonsten kann man auch immer schnell eine Stream-Klasse neuimplementieren
 
steht doch quasi da,
> new FileInputStream(filename)

hier kann offensichtlich ein beliebiger Stream stehen, hauptsache er liefert bits und bytes,
für DB oder Web oder sonst einer bekannten Quelle sollten die Daten eh schon auf allgemein bekannten Wegen per Stream ankommen,
ansonsten kann man auch immer schnell eine Stream-Klasse neuimplementieren

ok, dies heisst also, statt new FileInputStream(filename)
kann ich zb

new FileInputStream('http:\\server.com\webverzeichnis\excel_datei.xls')

oder auch
new FileInputStream(BLOBTypeQuelle)

angeben ?

die weitere Verarbeitung läuft dann wie gehabt ?
 
nein, wie du an einen richtigen Stream aus den Quellen kommst ist eine ganz andere Frage, was dann aber absolut nichts mehr mit POI zu tun hat

Web z.B.
> UrlConnection x = .. Webadresse, port, blah blah
> InputStream is = x.getInputStream(); // kein FileInputStream, ein anderer Stream!
> new POIFSFileSystem(is); // dieser Schritt ganz leicht

Oracle z.B. JDBC
> Connection x = .. DB-Adresse, User, Passwort
> PreparedStatement y = .. DB-Abfrage in SQL
> ResultSet z = .. executeQuery
> InputStream is = z.getBlob(1); // kein FileInputStream, ein anderer Stream!
> new POIFSFileSystem(is); // dieser Schritt wieder ganz leicht, völlig unabhängig vom Rest
 

Zurück
Oben