/** * 宋發准:這個方法主要用於根據模板導出多個sheet的excel文件. * * @param inputStream:輸入流:用於輸入模板 * @param response:用於下載 * @param filename:文件名 * @param sheetNamelist:sheet名稱,注意:list的size決定了sheet的個數. * @param objects:用於輸出的文件,是一個list<sheet>的數據,一個sheet代表一個頁面. * @param tagname:用於頁面取值的標記 */ public void buildDownloadExcelByMultiSheet(InputStream inputStream, HttpServletResponse response, String filename, List<String> sheetNamelist, ArrayList<SheetBean> objects, String tagname) { OutputStream out = null; try { response.setContentType(HttpUtils.getContentType(filename)); response.setHeader("Content-Disposition", HttpUtils.getDisposition(filename, false)); response.setHeader("Pragma", "public"); response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0"); response.setHeader("Cache-Control", "public"); response.setHeader("Expires", "0"); response.setHeader("Content-Transfer-Encoding", "binary"); XLSTransformer transformer = new XLSTransformer(); Workbook workbook = transformer.transformMultipleSheetsList(inputStream, objects, sheetNamelist, tagname, new HashMap(), 0); out = response.getOutputStream(); workbook.write(out); } catch (IOException e) { e.printStackTrace(); _log.error(e); } catch (InvalidFormatException e) { e.printStackTrace(); _log.error(e); } finally { try { if (out != null) out.close(); out = null; } catch (IOException e) { e.printStackTrace(); } } }
