Chcę, aby użytkownicy aplikacji WWW pobierać niektóre dane jako plik Excel.Jak uzyskać strumień wejściowy z obiektu HSSFWorkbook Object
Mam następną funkcję do wysyłania strumienia wejściowego w obiekcie odpowiedzi.
public static void sendFile(InputStream is, HttpServletResponse response) throws IOException {
BufferedInputStream in = null;
try {
int count;
byte[] buffer = new byte[BUFFER_SIZE];
in = new BufferedInputStream(is);
ServletOutputStream out = response.getOutputStream();
while(-1 != (count = in.read(buffer)))
out.write(buffer, 0, count);
out.flush();
} catch (IOException ioe) {
System.err.println("IOException in Download::sendFile");
ioe.printStackTrace();
} finally {
if (in != null) {
try { in.close();
} catch (IOException ioe) { ioe.printStackTrace(); }
}
}
}
Chciałbym przekształcić mój obiekt HSSFWorkbook na strumień wejściowy i przekazać go do poprzedniej metody.
public InputStream generateApplicationsExcel() {
HSSFWorkbook wb = new HSSFWorkbook();
// Populate the excel object
return null; // TODO. return the wb as InputStream
}
http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFWorkbook.html
+1 na przykład. Ale w jaki sposób mogę uzyskać rozmiar pliku HSSFWorkbook? Chcę dodać nagłówek 'Content-Length' – MyTitle
@MyTitle Myślę, że jeśli chciałbyś ustawić nagłówek długości treści, musisz najpierw napisać strumień do ByteArrayOutputStream, następnie uzyskać jego długość, a następnie napisać do HTTP odpowiedź. –