JAVA 資料匯入到Excel裡
阿新 • • 發佈:2019-02-20
public static String getExcel(String title[],String context[][],String url){ //操作執行 try { //t.xls為要新建的檔名 WritableWorkbook book= Workbook.createWorkbook(new File(url)); //生成名為“第一頁”的工作表,引數0表示這是第一頁 WritableSheet sheet=book.createSheet("第一頁",0); //寫入內容 for(int i=0;i<title.length;i++) //title sheet.addCell(new Label(i,0,title[i])); for(int i=0;i<context.length;i++) //context { for(int j=0;j<context[i].length;j++) { sheet.addCell(new Label(j,i+1,context[i][j])); } } /* sheet.addCell(new Label(0,1,"教師")); sheet.addCell(new Label(0,3,"助教"));*/ /*合併單元格.合併既可以是橫向的,也可以是縱向的 *WritableSheet.mergeCells(int m,int n,int p,int q); 表示由(m,n)到(p,q)的單元格組成的矩形區域合併 * */ /* sheet.mergeCells(0,1,0,2); sheet.mergeCells(0,3,0,4);*/ //寫入資料 book.write(); //關閉檔案 book.close(); return url; } catch(Exception e) { e.printStackTrace(); return "生成失敗!"; } }
傳進來的資料是二維陣列才可以。因為是為了確定資料在Excel裡的具體位置。
所以,介面寫成二維陣列不難,1個for迴圈就搞定了。
@Override public String getWriterExcel(WarnSelVo warn) { List<WarnReturnParam> maps = monitorWarningDao.selectListWarrningInfo(warn); String[][] strs =new String[maps.size()][]; for(int i=0;i<maps.size();i++){ WarnReturnParam mps =maps.get(i); String[] str =new String[]{mps.getPrjName(),mps.getMpsName(),mps.getStop_mark(),mps.getAlertDate(),mps.getDiffValue(),mps.getAccValue(),mps.getAlertLevel(), mps.getOpLevel(),mps.getUpdateTime()}; strs[i]=str; } String[] title =new String[]{"工點名稱","測點名稱"," 預警狀態","預警時間","當前差值","累計","預警前級別", "處理後級別","更新時間"}; String url = WriterExcelUtil.getExcel(title, strs, "e:/t12.xls"); return url; }
返回的是URL,為了介面實現下載。
/*** * 匯出報表 */ @RequestMapping(value = "/getWriterExcel") public ResponseEntity<byte[]> getWriterExcel(HttpServletRequest req) throws IOException { String file1 = QRCodeService.getWriterExcel(warn); File file = new File(file1); HttpHeaders headers = new HttpHeaders(); String fileName = new String(("warningInfo_" + TimeToolsUtil.getUserDate() + ".xls").getBytes("UTF-8"), "iso-8859-1");// 為了解決中文名稱亂碼問題 headers.setContentDispositionFormData("attachment", fileName); // 下載後顯示的名字 headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); byte[] t =FileUtils.readFileToByteArray(file); file.delete(); return new ResponseEntity<byte[]>(t, headers, HttpStatus.CREATED); // 向瀏覽器傳送資料 }