String / inputStream to xls?

FrankBooth

Erfahrenes Mitglied
Hallo,

ich bekomme von einem Server nach einem HttpRequest eine xls Datei als Antwort. Die würde ich jetzt gerne auch in eine lesbare .xls Datei speichern. Wie kann man das machen?

Java:
private static void getXls(String sLogonToken ) {
        static HttpHost _target= new HttpHost(sServer, Integer.parseInt(sPort),"http");
		final DefaultHttpClient httpClient = new DefaultHttpClient();
		
		try {
			String url = "/....";
			HttpGet httpGetRequest = new HttpGet(url);
			httpGetRequest.addHeader("Accept", "application/vnd.ms-excel");
			
			HttpResponse httpResponse = httpClient.execute(_target, httpGetRequest);
			HttpEntity entity = httpResponse.getEntity();
			String sFinal="";
			if (entity != null) {
				InputStream inputStream = entity.getContent();
				sFinal = getInputString(inputStream);
         //hier sollte aus dem String oder dem IStream ein xls gemacht werden!!
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			httpClient.getConnectionManager().shutdown();
		}

Danke für die Hilfe!!
 
Mach einen FileoutputStream oÄ, öffnen.
Aus dem Inputstream solang lesen bis nichts mehr kommt
und alles gelesene auf den Outputstream schreiben.
Dann Stream schließen.
 
Hab ich gemacht. Kann die xls-Datei aber nicht öffnen.
Java:
File f=new File("outFile.xls");

OutputStream out=new FileOutputStream(f);
byte buf[]=new byte[1024];
int len;
while((len=inputStream.read(buf))>0)
   out.write(buf,0,len);
out.close();
inputStream.close();
 
Mach zur Sicherheit vor dem OutputStream schliessen noch ein flush(); um Daten aus dem Puffer wirklich ins File zu schreiben.
Java:
File f=new File("outFile.xls");
 
OutputStream out=new FileOutputStream(f);
byte buf[]=new byte[1024];
int len;
while((len=inputStream.read(buf))>0)
   out.write(buf,0,len);
out.flush(); //Puffer leeren und in File schreiben
out.close();
inputStream.close();
Lg hendl
 
Was steht den in dem File drinnen oder hat er zumindest schon mal die richtige Größe?
edit
Ist das auch der verwendete ganze Code?
Java:
HttpEntity entity = httpResponse.getEntity();
            String sFinal="";
            if (entity != null) {
                InputStream inputStream = entity.getContent();
                sFinal = getInputString(inputStream);
Was mich ein wenig verwirrt ist, dass du dir den InputStream in einen String schreibst?
Lg hendl
 
Zuletzt bearbeitet:
Überschrift ist String / IStream to xls. Ich brauche den String an dieser Stelle nicht. Ich kann, wie schon geschrieben, die Datei nicht öffnen "Format fehler". Größe kann ich gerade nicht beurteilen. Ich komme erste morgen wieder an den Server. Denke ist aber zu klein :(
 
Zuletzt bearbeitet:
Habe den Fehler beim selbst testen herausgefunden, du musst die Filegröße vorher übergeben. Sonst wird das File immer die 1024 byte groß und das dann länger als das eigentliche File.
Java:
File start=new File("C:/Users/Admin/Desktop/Noten.xlsx");
InputStream ir=new FileInputStream(start);
OutputStream ow=new FileOutputStream(new File("C:/Users/Admin/Desktop/Noten_copy.xlsx"));
int buf;
byte [] arr=new byte[(int) start.length()];
while((buf=ir.read(arr))!=-1)
	ow.write(arr);
ow.flush();
ow.close();
ir.close();

Lg hendl
 
So vielen Dank schon mal für die netten Antworten. Leider kenn ich die Größe der Datei nicht. Ich habe aber aus deinem Code in der While Schleife !=-1 übernommen und alles ist gut:

Java:
InputStream inputStream = entity.getContent();					
File f=new File("outFile.xls");
OutputStream out=new FileOutputStream(f);
byte buf[]=new byte[1024];
int len;
while((len=inputStream.read(buf))!=-1)
   out.write(buf,0,len);

out.flush();
out.close();
inputStream.close();

Vielen Dank
 
Zurück