jxl && POI
jxl是一個開源的Java Excel API項目,通過Jxl,Java可以很方便的操作微軟的Excel文檔。除了Jxl之外,還有Apache的一個POI項目,也可以操作Excel,兩者相比之下:Jxl使用方便,但功能相對POI比較弱,很多時候,一個軟件應用程序需要生成Microsoft Excel文件格式的報告。有時,一個應用程序甚至希望將Excel文件作為輸入數據。例如,一個公司開發的應用程序將財務部門需要所有輸出生成自己的Excel。
Apache POI是一種流行的API,它允許程序員使用Java程序創建,修改和顯示MS Office文件。這由Apache軟件基金會開發使用Java分布式設計或修改Microsoft Office文件的開源庫。它包含類和方法對用戶輸入數據或文件到MS Office文檔進行解碼。
jxl是一個開源的Java Excel API項目,通過Jxl,Java可以很方便的操作微軟的Excel文檔。除了Jxl之外,還有Apache的一個POI項目,也可以操作Excel,兩者相比之下:Jxl使用方便,但功能相對POI比較弱,很多時候,一個軟件應用程序需要生成Microsoft Excel文件格式的報告。有時,一個應用程序甚至希望將Excel文件作為輸入數據。例如,一個公司開發的應用程序將財務部門需要所有輸出生成自己的Excel。
Apache POI是一種流行的API,它允許程序員使用Java程序創建,修改和顯示MS Office文件。這由Apache軟件基金會開發使用Java分布式設計或修改Microsoft Office文件的開源庫。它包含類和方法對用戶輸入數據或文件到MS Office文檔進行解碼。
使用jxl導出excel
使用jxl導出Excel 首先先在pom.xml添加依賴
<!--jxl--> <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifactId>jxl</artifactId> <version>2.6.12</version> </dependency>
前台界面
我們現在需要在頁面上點擊導出Excel按鈕就可以把表格導出來
接着需要在js文件實現exportFile函數
/*導出文件*/ exportFile: function () { window.location.href = "/underwrite_export.do" },
后台業務
這時js會跳轉到url:underwrite_export.do
這時瀏覽器會根據域名查找 Spring會根據映射的url在Controller執行對應的方法
//==========導出Excel=========== @PermissionName("核保審核結果導出") @RequestMapping("/underwrite_export") @RequiresPermissions("underwrite:export") @ResponseBody public void exportFile(HttpServletResponse response) throws Exception { // 1.文件下載響應頭 response.setHeader("Content-Disposition", "attachment;filename=underwrite.xls"); // 2.響應到瀏覽器 WritableWorkbook workbook = Workbook.createWorkbook(response.getOutputStream()); // 創建工作簿sheet WritableSheet sheet = workbook.createSheet("underwrite", 0); // 3.設置column名 sheet.addCell(new Label(0, 0, "承保機構")); sheet.addCell(new Label(1, 0, "申請單號")); sheet.addCell(new Label(2, 0, "產品名稱")); sheet.addCell(new Label(3, 0, "投保人")); sheet.addCell(new Label(4, 0, "申請時間")); sheet.addCell(new Label(5, 0, "提交員工")); sheet.addCell(new Label(6, 0, "提交狀態")); sheet.addCell(new Label(7, 0, "審核狀態")); sheet.addCell(new Label(8, 0, "額度")); // 4.把核保的數據填充到工作簿中 service調用selectExport()查詢數據庫 List<UnderwriteWait> list = service.selectExport(); System.out.println(list.toArray()); try{ for (int i = 0, j = 1; i < list.size(); i++, j++) { UnderwriteWait underwrite = list.get(i); //System.out.println(underwrite); //設置列寬 sheet.setColumnView(i, 16); //重新設置部分列寬 sheet.setColumnView(3, 14); sheet.setColumnView(6, 10); sheet.setColumnView(7, 10); //設置行高 sheet.setRowView(i, 350); //設置字體的attribute WritableFont font1=new WritableFont(WritableFont.createFont("楷體 _GB2312"), 12, WritableFont.NO_BOLD); WritableCellFormat format1=new WritableCellFormat(font1); System.out.println(underwrite.getId()); sheet.addCell(new Label(0, j, underwrite.getOrg().getName(),format1)); sheet.addCell(new Label(1, j, underwrite.getApplyordernumber(),format1)); sheet.addCell(new Label(2, j, underwrite.getCarinsuranc().getInsName(),format1)); sheet.addCell(new Label(3, j, underwrite.getClient().getName(),format1)); String applydate=underwrite.getApplydate().toLocaleString().substring(0,9); sheet.addCell(new Label(4, j, applydate,format1)); sheet.addCell(new Label(5, j, underwrite.getEmployee().getRealname(),format1)); String stateApply=(underwrite.getStateApply().toString().equals("0")) ? "未審核":"已提交"; sheet.addCell(new Label(6, j,stateApply)); String stateAudit=(underwrite.getStateAudit().toString().equals("1")) ? "已提交":"已審核"; sheet.addCell(new Label(7, j, stateAudit)); sheet.addCell(new Label(8, j, underwrite.getAmount().toString(),format1)); }}catch (Exception e){ e.printStackTrace(); } // 5.寫入數據 workbook.write(); // 6.關閉資源 workbook.close(); }
這時我們就把jxl導出excel的功能做完了


jxl導入Excel
js文件
/*導入文件*/ importFile: function () { /*清空表單*/ $("#underwrite_file").form("clear"); /*打開彈出框*/ $("#underwrite_file").dialog("open"); }
后台Controller
@PermissionName("資料導入") @RequestMapping("/underwrite_import") @RequiresPermissions("underwrite:import") public String importFile(MultipartFile file) throws Exception { // 1.獲取用戶上傳的文件 Workbook workbook = Workbook.getWorkbook(file.getInputStream()); // 2.獲取工作簿sheet Sheet sheet = workbook.getSheet(0); // 3.獲取總行數 int rows = sheet.getRows(); for (int i = 1; i < rows; i++) { Underwrite underwrite = new Underwrite(); underwrite.setXxx(sheet.getCell(0, i).getContents()); underwrite.setXxx(sheet.getCell(1, i).getContents()); employee.setXxx(sheet.getCell(2, i).getContents()); employee.setEmail(sheet.getCell(3, i).getContents()); // 4.添加到數據庫中 service.insert(underwrite); } // 5.關閉資源 workbook.close(); return "underwrite"; }