JavaWeb導出Excel文件並彈出下載框。本站提示廣大學習愛好者:(JavaWeb導出Excel文件並彈出下載框)文章只能為提供參考,不一定能成為您想要的結果。以下是JavaWeb導出Excel文件並彈出下載框正文
1、引言
在Java Web開辟中常常觸及到報表,比來做的項目中須要完成將數據庫中的數據顯示為表格,而且完成導出為Excel文件的功效。
2、相干jar包
應用POI可以很好的處理Excel的導入和導出的成績,POI下載地址:
poi-3.6-20091214.jar
3、症結代碼
起首導入上述jar包。
在生成excel時普通數據源情勢為一個List,上面把生成Excel格局的代碼貼出來:
/** * 以下為生成Excel操作 */ // 1.創立一個workbook,對應一個Excel文件 HSSFWorkbook wb = new HSSFWorkbook(); // 2.在workbook中添加一個sheet,對應Excel中的一個sheet HSSFSheet sheet = wb.createSheet("XXX表"); // 3.在sheet中添加表頭第0行,老版本poi對excel行數列數無限制short HSSFRow row = sheet.createRow((int) 0); // 4.創立單位格,設置值表頭,設置表頭居中 HSSFCellStyle style = wb.createCellStyle(); // 居中格局 style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 設置表頭 HSSFCell cell = row.createCell(0); cell.setCellValue("表頭1"); cell.setCellStyle(style); cell = row.createCell(1); cell.setCellValue("表頭2"); cell.setCellStyle(style); cell = row.createCell(2); cell.setCellValue("表頭3"); cell.setCellStyle(style); cell = row.createCell(3); cell.setCellValue("表頭4"); cell.setCellStyle(style); cell = row.createCell(4); cell.setCellValue("表頭5"); cell.setCellStyle(style);
生成excel格局後要將數據寫入excel:
// 輪回將數據寫入Excel for (int i = 0; i < lists.size(); i++) { row = sheet.createRow((int) i + 1); List list= lists.get(i); // 創立單位格,設置值 row.createCell(0).setCellValue(list.getXXX()); row.createCell(1).setCellValue(list.getXXX()); row.createCell(2).setCellValue(list.getXXX()); row.createCell(3).setCellValue(list.getXXX()); row.createCell(4).setCellValue(list.getXXX()); }
以後將生成的Excel以流輸入。
*不彈出下載框
FileOutputStream out =new FileOutputStream("E:/XXX.xls"); wb.write(out); out.close();
*彈出下載框
String fileName = "XXX表"; ByteArrayOutputStream os = new ByteArrayOutputStream(); wb.write(os); byte[] content = os.toByteArray(); InputStream is = new ByteArrayInputStream(content); // 設置response參數,可以翻開下載頁面 res.reset(); res.setContentType("application/vnd.ms-excel;charset=utf-8"); res.setHeader("Content-Disposition", "attachment;filename=" + new String((fileName + ".xls").getBytes(), "iso-8859-1")); ServletOutputStream out = res.getOutputStream(); BufferedInputStream bis = null; BufferedOutputStream bos = null; try { bis = new BufferedInputStream(is); bos = new BufferedOutputStream(out); byte[] buff = new byte[2048]; int bytesRead; // Simple read/write loop. while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesRead); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally { if (bis != null) bis.close(); if (bos != null) bos.close(); }
完成以上操作以後便可跳轉到其他頁面。
同時POI還可以將Excel上傳解析顯示在網頁中,這個另外一篇文章總結,敬請等待!
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。