1. 程式人生 > >JAVA 資料匯入到Excel裡

JAVA 資料匯入到Excel裡

 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); // 向瀏覽器傳送資料
		
		}