使用 JstlView 輸出 JSP 要搭配使用 JSP 檔,使用 JasperReportsPdfView 輸出 JasperReports PDF 要搭配 japser 檔,那輸出 Excel 檔呢?當然沒有像 JSP 或 Jasper 這樣的範本檔,所以就直接用 View 輸出囉。
使用 Java 輸出 Excel 檔當然是用 Apache POI,所以得先加入 Dependency。
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.8</version> </dependency>然後,在 Controller 直接實作抽象的 AbstractExcelView 就可以了。
@RequestMapping(value = "/export") public View export(Model model, HttpServletRequest request) { // 以 Apache POI 實作 AbstractExcelView View view = new AbstractExcelView() { @Override protected void buildExcelDocument(Map<String, Object> model, HSSFWorkbook workbook, HttpServletRequest request, HttpServletResponse response) throws Exception { // 建立 Sheet HSSFSheet sheet = workbook.createSheet("客戶資料"); int rowNum = 0; int idx = 0; // 建立標題 HSSFRow header = sheet.createRow(rowNum++); header.createCell(idx++).setCellValue("流水號"); header.createCell(idx++).setCellValue("名稱"); header.createCell(idx++).setCellValue("電話"); header.createCell(idx++).setCellValue("手機"); header.createCell(idx++).setCellValue("Email"); header.createCell(idx++).setCellValue("地址"); // 輸出內容 List<Customer> list = null; // 取得客戶資料 HSSFRow row; for (Customer p : list) { idx = 0; row = sheet.createRow(rowNum++); row.createCell(idx++).setCellValue(p.getUid()); row.createCell(idx++).setCellValue(p.getName()); row.createCell(idx++).setCellValue(p.getTel()); row.createCell(idx++).setCellValue(p.getCellphone()); row.createCell(idx++).setCellValue(p.getEmail()); row.createCell(idx++).setCellValue(p.getAddress()); } } }; // 直接回傳 View 物件,就可以生出水水的 Excel 檔了 return view; }這樣就可以用 http://.../export.xls 得到 Excel 檔,還能更簡單嗎?
---
---
---
沒有留言:
張貼留言