Java導入Excel文件返回數據對應屬性類字段,Java導出Excel文件如何讓數據對應指定的標題字段

Java導入Excel文件如何對應屬性類對應的字段?Java導出Excel文件如何實現?
下面分爲兩段供各位測試,要是不懂或者實在不行可以評論一下,看到我會回覆的
jar這些你們可以自己找,用maven也就是複製粘貼的事。

下面的鏈接是封裝好的Excel文件導入導出的樣式跟註解:
鏈接: https://pan.baidu.com/s/1k484vLTeTuMnTaNsOqYFqQ 提取碼: wtkk

Excel文件導入導出必要的jar包:
Excel文件導入導出必要的jar包

屬性類中設置:
通過畫出的綠線那裏的順序將Excel文件中的數據一一對應用於導入導出
@ExcelField(title=“科目名稱”, align=2, sort=25,groups={1,2})
導入導出對應屬性

導入:

前端通過form表單提交Excel文件數據:

		<form id="importForm" action="${ctx}/rental/fcRentalRegistration/import" method="post" enctype="multipart/form-data"
			class="form-search" style="padding-left:20px;text-align:center;" onsubmit="loading('正在導入,請稍等...');"><br/>
			<input id="uploadFile" name="file" type="file" style="width:330px"/><br/><br/>  
			<input id="btnImportSubmit" class="btn btn-primary" type="submit" value="   導    入   "/>
			<a href="${ctx}/rental/fcRentalRegistration/import/template">下載模板</a>
		</form>

後端導入通過前端提交的文件利用封裝好的Java類直接填充屬性類中對應的屬性:

 	 @RequestMapping(value = "import", method=RequestMethod.POST)
 	 public String importFile(MultipartFile file, RedirectAttributes redirectAttributes) {
		if(Global.isDemoMode()){
			addMessage(redirectAttributes, "演示模式,不允許操作!");
			return "redirect:" + adminPath + "/sys/user/list?repage";
		}
		try {
			int successNum = 0;//用於計算成功數量
			int failureNum = 0;//用於計算錯誤數量
			StringBuilder failureMsg = new StringBuilder();
			ImportExcel ei = new ImportExcel(file, 1, 0);//這個是ImportExcel(封裝好的Java類)
			int[] group = {1};//group可以不要
			List<GrlLonixSubjectFinancial> list = ei.getDataList(GrlLonixSubjectFinancial.class,group);//直接調用這個方法就可以返回對應的字段內部是通過你導出的@ExcelField註解指定的字段進行自動賦值
			for (GrlLonixSubjectFinancial subject : list){//增強for是直接返回屬性類的了
				try{
					if ("true".equals(checkCode("", subject.getFinancialCode()))){
						//BeanValidators.validateWithException(validator, subject);
						subject.setParent(findPreambleCode(null,subject.getFinancialCode()));
						grlLonixSubjectFinancialService.save(subject,"yes");//添加到數據庫
						successNum++;
					}else{
						failureMsg.append("<br/>科目編碼 "+subject.getFinancialCode()+" 已存在; ");
						failureNum++;
					}
				}catch(ConstraintViolationException ex){
					failureMsg.append("<br/>科目編碼 "+subject.getFinancialCode()+" 導入失敗:");
					List<String> messageList = BeanValidators.extractPropertyAndMessageAsList(ex, ": ");
					for (String message : messageList){
						failureMsg.append(message+"; ");
						failureNum++;
					}
				}catch (Exception ex) {
					failureMsg.append("<br/>科目編碼 "+subject.getFinancialCode()+" 導入失敗:"+ex.getMessage());
				}
			}
			if (failureNum>0){
				failureMsg.insert(0, ",失敗 "+failureNum+" 條用戶,導入信息如下:");
			}
			addMessage(redirectAttributes, "已成功導入 "+successNum+" 條科目"+failureMsg);
		} catch (Exception e) {
			addMessage(redirectAttributes, "導入科目失敗!失敗信息:"+e.getMessage());
		}
		return "redirect:" + adminPath + "/subject/grlLonixSubjectFinancial/list?repage";//返回路徑
    }

導出:

後端導出是通過上面屬性類設置在字段上的註解而對應導出的:

 @RequestMapping(value = "export", method=RequestMethod.POST)
    public String exportFile(GrlLonixSubjectFinancial grlLonixSubjectFinancial, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
		try {
            String fileName = "科目數據"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";//文件名
            //數據庫查詢數據,注意:這裏查詢的數據是List<屬性類>的數據的。我這裏只是多了一層,看下面傳參就知道了
            Page<GrlLonixSubjectFinancial> page = grlLonixSubjectFinancialService.findPage(new Page<GrlLonixSubjectFinancial>(request, response, -1), grlLonixSubjectFinancial); 
            int[] group = {1};//這個可以不用
    		new ExportExcel("科目數據", GrlLonixSubjectFinancial.class,group).setDataList(page.getList()).write(response, fileName).dispose();
    		return null;//這個返回可以根據自己的路徑來定
		} catch (Exception e) {
			addMessage(redirectAttributes, "導出科目失敗!失敗信息:"+e.getMessage());
		}
		return "redirect:" + adminPath + "/subject/grlLonixSubjectFinancial/list?repage";
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章