poi를 이용하여 페이지에서 excel의 가져오기와 내보내기 (페이지를 새로 고치지 않음) 를 실현합니다

6334 단어

먼저 가져오기


필요: 페이지에서 특정 형식의 excel을 선택하여 데이터베이스로 가져옵니다.

프론트 데스크 코드:

<form id="importForm1" action="ProductImport!doImportProductExcel1.action" method="post" enctype="multipart/form-data" target="uploadTarget">
	<s:file label=" " name="importProExcel1"></s:file><span style="color:red;font-size=8px;">*( excel )</span>   
	<a href="#" class="easyui-linkbutton" id="importSbt1" style="text-decoration:none;"> </a>
</form>
주: 폼을 정의하고form의 method,enctype 속성을 주의합니다. 폼에서 파일 탭을 정의하여 excel 파일을 선택하십시오. 다음은 폼을 제출하는 단추입니다.
<div style="background:#ffffbb;border:1px solid #0099cc;padding:5px 5px 5px 5px;margin-top:5px;">
	 :<span id="import-show1" style="color:#0099cc;text-decoration:underline;"></span>
</div>
참고: 가져온 파일을 표시하는 div를 정의합니다.
<iframe id="uploadTarget" name="uploadTarget" style='display:none;'></iframe>
주: 폼이 제출된 페이지에 저장할 수 있는 숨겨진iframe를 정의합니다. 위form 탭의 target 속성을 주의하십시오. 바로 이iframe에 대응하는 것입니다.
$j('#importSbt1').click(function(){
			var file = $j('input[name=importProExcel1]').val();
			if(file.lastIndexOf('.xls')==-1){
				$j.messager.alert(' ',' , excel !','error');
				return false;
			}
			$j('#importForm1').submit();
		});
주: 제출 전 업로드 문서의 형식을 검증하고 js로 폼을 제출합니다

백그라운드 코드:

	//    1
	public String doImportProductExcel1(){
		this.excelDataList = new ArrayList();
		InputStream is = null;
		try {
			is = new FileInputStream(importProExcel1);
			parseExcel1(is);
			importData1();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			this.importFlag = "-1";
			return "importResult";
		} catch (IOException e) {
			e.printStackTrace();
			this.importFlag = "-1";
			return "importResult";
		}
		if(this.opResult != null && this.opResult.isSuccess()){
			this.importFlag = "1";
		}else {
			this.importFlag = "-1";
		}
		return "importResult";
	}
참고: 백그라운드 액션은 주로 parseExcel1과importData1 두 가지 방법이 있는데 각각 excel의 해석과 데이터의 데이터베이스로 가져온 다음importResult 페이지로 되돌아간다
public void parseExcel1(InputStream is) throws IOException{
		if(is == null){
			return ;
		}
		XSSFWorkbook xwb = new XSSFWorkbook(is);
		//System.out.println(xwb.getNumberOfSheets());
		for(int sheetNum=0;sheetNum<xwb.getNumberOfSheets();sheetNum++){
			Map sheetMap = new HashMap();
			Map<String,String> compMap = new HashMap<String, String>();
			List prodList = new ArrayList();
			
			XSSFSheet xs = xwb.getSheetAt(sheetNum);
			
			//  
			XSSFRow xrComp = xs.getRow(1);
			for(int cellNum=0;cellNum<xrComp.getLastCellNum();cellNum++){
				XSSFCell xc = xrComp.getCell(cellNum);
				String xcValue = "";
				if(xc != null){
					xcValue =  xc.getStringCellValue();
				}
				switch(cellNum){
					case 0:compMap.put("companyName", xcValue);break;
					case 1:compMap.put("companyAddress", xcValue);break;
				}
			}
			sheetMap.put("compMap", compMap);
			
			System.out.println(compMap);
			//compMap.put("id", XUtils.getId());
			//template.insert("pkcc.imports.productimport.insertBuyCompanyinfo",compMap);
			//template.insert("pkcc.imports.productimport.insertBuyCompanyContact",compMap);
			//  
			for(int rowNum=3;rowNum<=xs.getLastRowNum();rowNum++){
				XSSFRow xrProd = xs.getRow(rowNum);
				Map<String,String> prodMap = new HashMap<String,String>();
				for(int cellNum=0;cellNum<xrProd.getLastCellNum();cellNum++){
					XSSFCell xc = xrProd.getCell(cellNum);
					String xcValue = "";
					if(xc != null){
						xcValue =  xc.getStringCellValue();
					}
					switch(cellNum){
						case 0:prodMap.put("moduleNumber", xcValue);break;
						case 1:prodMap.put("serialNumber", xcValue);break;
						case 2:prodMap.put("simNumber", xcValue);break;
					}
				}
				prodList.add(prodMap);
			}
			sheetMap.put("prodList", prodList);
			this.excelDataList.add(sheetMap);
			//System.out.println(prodList);
		}
	}
public void importData1(){
		this.opResult = daoHelper.execute(new DaoCallback() {
			public Object exec(IBatisTemplate template) {
				if(excelDataList!=null&&excelDataList.size()>0){
					for(int i=0;i<excelDataList.size();i++){
						String compId = XUtils.getId();
						Map sheetMap = (Map)excelDataList.get(i);
						Map<String,String> compMap = (Map<String,String>)sheetMap.get("compMap");
						compMap.put("id",compId);
						template.insert("pkcc.imports.productimport.insertBuyCompanyinfo",compMap);

						List<Map<String,String>> prodList = (List<Map<String,String>>)sheetMap.get("prodList");
						for(int j=0;j<prodList.size();j++){
							Map<String,String> prodMap = prodList.get(j);
							//          
							String productId = XUtils.getId();
							prodMap.put("id", productId);
							prodMap.put("state", "0");
							template.insert("pkcc.product.product.insertProduct",prodMap);
						}
					}
				}
				return null;
			}
		});
	}
페이지로 돌아가기 importResult:
$j(function(){
		//  excel 
		if('${importFlag}' == '1'){
			window.parent.$j.messager.alert(' ',' !','info');
			window.parent.$j('#import-show1').html(window.parent.$j('#import-show1').html()+'${importProExcel1FileName}'+',');
		} else if('${importFlag}' == '2') {
			window.parent.$j.messager.alert(' ',' !','info');
			window.parent.$j('#import-show2').html(window.parent.$j('#import-show2').html()+'${importProExcel2FileName}'+',');
		} else {
			window.parent.$j.messager.alert(' ',' !','error');
		}
	});

가져오기 성공 여부를 판단하고 팝업 상자로 결과를 제시합니다

좋은 웹페이지 즐겨찾기