POI技術匯出資訊到.xls .xlsx Excel表
阿新 • • 發佈:2019-01-06
2、Controller層
// 單號資訊service @Autowired public OrderService orderService ; //服務層改為自己的 /** * 匯出訂單資訊到Excel表 * @author Justin */ @RequestMapping("order_export.action") public void exportOrderToExcel(HttpServletResponse response) throws IOException { try { Order order= new Order(); List<Order> orderList = orderService.selectAll(); //列表,服務層改為自己的 if(orderList .size()==0){ response.sendRedirect("errornull.action"); }else{ // 在記憶體中建立一個Excel檔案,通過輸出流寫到客戶端提供下載 // 記憶體中保留 10000 條資料,以免記憶體溢位,其餘寫入 硬碟 SXSSFWorkbook workbook = new SXSSFWorkbook(10000); // 建立一個sheet頁 SXSSFSheet sheet = (SXSSFSheet) workbook.createSheet("訂單資訊"); // 分別設定Excel列的寬度 sheet.setColumnWidth(0, 150 * 40); sheet.setColumnWidth(1, 100 * 40); sheet.setColumnWidth(2, 100 * 40); sheet.setColumnWidth(3, 100 * 40); // 建立標題 SXSSFRow headRow = (SXSSFRow) sheet.createRow(0); headRow.createCell(0).setCellValue("訂單號"); headRow.createCell(1).setCellValue("姓名"); headRow.createCell(2).setCellValue("地址"); headRow.createCell(3).setCellValue("電話"); for (Order order: orderList) { // 建立行 SXSSFRow dataRow = (SXSSFRow) sheet.createRow(sheet.getLastRowNum() + 1); dataRow.createCell(0).setCellValue(order.getOrderNumber().toString()); dataRow.createCell(1).setCellValue(order.getName().toString()); dataRow.createCell(2).setCellValue(order.getAddress().toString()); dataRow.createCell(3).setCellValue(order.getPhone.toString()); } // 設定Excel檔名,並以中文進行編碼 String name = "訂單資訊"+ DateUtils.getyyyyMMddHHmmss(new Date()); String codedFileName = new String(name.getBytes("gbk"), "iso-8859-1"); response.setHeader("Content-Disposition", "attachment;filename=" + codedFileName + ".xlsx"); // 響應型別,編碼 response.setContentType("application/octet-stream;charset=UTF-8"); // 形成輸出流 OutputStream osOut = response.getOutputStream(); // 將指定的位元組寫入此輸出流 workbook.write(osOut); // 重新整理此輸出流並強制將所有緩衝的輸出位元組被寫出 osOut.flush(); // 關閉流 osOut.close(); /* * dispose of temporary files backing this workbook on disk 處理在磁碟上備份此工作簿的臨時檔案 * SXSSF分配臨時檔案,您必須始終清除顯式,通過呼叫dispose方法 */ workbook.dispose(); } } catch (Exception e) { e.printStackTrace(); response.sendRedirect("error.action"); log.error("系統錯誤", e.fillInStackTrace()); } }