POIインポートExcelファイルをデータベースにエクスポート

8498 ワード

JXLインポートExcelの练习をしたばかりなので、POIでExcelのインポートエクスポートを実现してみました.以下は自分のPOIインポートExcelのコードです.参考にしてください.间违いがあれば、友达を加えて検讨してください.QQ:84926183
 
1.対応するpoi jarパッケージをインポートし、3.7を使用します.
 
2.Excelファイルをデータのクラスにインポートする(ここではExcelファイルを解析する操作をクラスにカプセル化し、actionでそのクラスを呼び出せばよい):
/**
	 * POI:  Excel                   
	 * @param fis      
	 * @return List Excel          
	 */
	public static List importEmployeeByPoi(InputStream fis) {
		//        Excel      List  
		List infos = new ArrayList();
                //        Excel            BEAN.
		EmployeeInfo employeeInfo = null;
		
		try {
			//  Excel   
			HSSFWorkbook hwb = new HSSFWorkbook(fis);
			//        
			HSSFSheet sheet = hwb.getSheetAt(0);
			HSSFRow row = null;
			//     
			DateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
			//            ,i         getNumberOfSheets         
			for(int i = 0; i < hwb.getNumberOfSheets(); i++) {
				sheet = hwb.getSheetAt(i);
				//        ,j     getPhysicalNumberOfRows    
				for(int j = 1; j < sheet.getPhysicalNumberOfRows(); j++) {
					row = sheet.getRow(j);
					employeeInfo = new EmployeeInfo();
					
					/*     Excel             ,               
				  	//  1:Excel        double  ,    Long          (       ,   。)
					//       double     String  ,    String  '.'      ,         Long  。
					String orgId = row.getCell(0).toString();
					String orgId1 = orgId.substring(0, orgId.indexOf('.'));
					//  2:  double      (long)Double       Long  。
					employeeInfo.setOrgId((long)(row.getCell(0).getNumericCellValue()));
					employeeInfo.setEmployeeNumber(row.getCell(1).toString());
					employeeInfo.setFullName(row.getCell(2).toString());
					employeeInfo.setSex(row.getCell(3).toString());
					if(row.getCell(4) != null) {
						try {
							employeeInfo.setDateOfBirth(ft.parse(row.getCell(4).toString()));
						} catch (ParseException e) {
							e.printStackTrace();
						}
					}
					employeeInfo.setTownOfBirth(row.getCell(5).toString());
					employeeInfo.setNationalIdentifier(row.getCell(6).toString());*/
					
					//     getCellValue(HSSFCell cell)            ,       
					if(ImportEmployee.getCellValue(row.getCell(0)) != null && !"".equals(ImportEmployee.getCellValue(row.getCell(0)))) {
						employeeInfo.setOrgId(Long.valueOf(ImportEmployee.getCellValue(row.getCell(0))));
					}
					employeeInfo.setEmployeeNumber(ImportEmployee.getCellValue(row.getCell(1)));
					employeeInfo.setFullName(ImportEmployee.getCellValue(row.getCell(2)));
					employeeInfo.setSex(ImportEmployee.getCellValue(row.getCell(3)));
					if(ImportEmployee.getCellValue(row.getCell(4)) != null && !"".equals(ImportEmployee.getCellValue(row.getCell(4)))) {
						try {
							employeeInfo.setDateOfBirth(ft.parse(ImportEmployee.getCellValue(row.getCell(4))));
						} catch (ParseException e) {
							e.printStackTrace();
						}
						employeeInfo.setTownOfBirth(ImportEmployee.getCellValue(row.getCell(5)));
					}
					employeeInfo.setNationalIdentifier(ImportEmployee.getCellValue(row.getCell(6)));
					infos.add(employeeInfo);
				}
				
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return infos;
	}
	//   Excel            
	private static String getCellValue(HSSFCell cell){
        String value = null;
        //        
        switch(cell.getCellType())
        {
            case HSSFCell.CELL_TYPE_STRING://   
                value = cell.getRichStringCellValue().getString();
                break;
            case HSSFCell.CELL_TYPE_NUMERIC://  
                long dd = (long)cell.getNumericCellValue();
                value = dd+"";
                break;
            case HSSFCell.CELL_TYPE_BLANK:
                value = "";
                break;   
            case HSSFCell.CELL_TYPE_FORMULA:
                value = String.valueOf(cell.getCellFormula());
                break;
            case HSSFCell.CELL_TYPE_BOOLEAN://boolean  
                value = String.valueOf(cell.getBooleanCellValue());
                break;
            case HSSFCell.CELL_TYPE_ERROR:
                value = String.valueOf(cell.getErrorCellValue());
                break;
            default:
                break;
        }
        return value;
    }
 アクションの書き方:
    練習をしているので、使い方をよく知っているだけで、ここでは簡単です.
//       :     
		String excelPath = request.getParameter("excelPath");
		//   
		InputStream fis = new FileInputStream(excelPath);
		
		//JXL:    Excel     
		// List infos = ImportEmployee.importEmployee(fis);
		
		//POI:    Excel     
		List infos = ImportEmployee.importEmployeeByPoi(fis);
		
		//    Excel     
		for(EmployeeInfo info:infos) {
			//          (  :     ;   :     )
			EmployeeInfo info1 = this.selectEmpByEmpNum(info.getEmployeeNumber());
			if(info1 == null) {
				//          
				this.service.addEmployeeInfo(info);
			}else{
				// personId     
				info.setPersonId(info1.getPersonId());
				//    
				this.updatEmployeeInfo(info);
			}
		}
		//   
		fis.close();
 インポート全体の整合性のために、最後にjspページのコードを添付します.
  


-----------------------JS            ------------------------

//Excel         
function importEmp(){
	//          Excel  
	var excelPath = document.getElementById("excelPath").value;
	if(excelPath == null || excelPath == ''){
		alert("       Excel  ");
		return;
	}else{
		var fileExtend = excelPath.substring(excelPath.lastIndexOf('.')).toLowerCase(); 
		if(fileExtend == '.xls'){
		}else{
			alert("      '.xls'  ");
		    return;
		}
	}
	//    
	document.getElementById("empForm").action="/EmpExcel.action.EmpExcelAction.do?method=importEmployeeInfos";  
	document.getElementById("empForm").submit();
}
 ここまでがExcelファイルをインポートするすべてのコードです.
 
 
3.Excelファイルとしてエクスポート:
 /**
	 * POI :     ,   Excel 
	 * @param os     (action: OutputStream os = response.getOutputStream();)
	 * @param employeeInfos         
	 */
	public static void exportEmployeeByPoi(OutputStream os, List employeeInfos) {
		
		try {
			//  Excel   
			HSSFWorkbook book = new HSSFWorkbook();
			// Excel          
			HSSFSheet sheet = book.createSheet("    ");
			//       (  )
			//HSSFCellStyle cellStyle = book.createCellStyle();
			//       
			HSSFRow row = sheet.createRow(0);//     
			HSSFCell cell0 = row.createCell(0);
			HSSFCell cell1 = row.createCell(1);
			HSSFCell cell2 = row.createCell(2);
			HSSFCell cell3 = row.createCell(3);
			HSSFCell cell4 = row.createCell(4);
			//           
			cell0.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell1.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell2.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell3.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell4.setCellType(HSSFCell.CELL_TYPE_STRING);
			//         
			cell0.setCellValue("    ");
			cell1.setCellValue("    ");
			cell2.setCellValue("    ");
			cell3.setCellValue("    ");
			cell4.setCellValue("    ");
			//       excel 
			for(int i = 0; i < employeeInfos.size(); i++) {
				EmployeeInfo employeeInfo = employeeInfos.get(i);
				//   i 
				HSSFRow rowi = sheet.createRow(i + 1);
				//  i             
				rowi.createCell(0).setCellValue(employeeInfo.getEmployeeNumber());
				rowi.createCell(1).setCellValue(employeeInfo.getFullName());
				//    (M:  F: )
				String sex = null;
				if("M".equals(employeeInfo.getSex())) {
					sex = " ";
				}else {
					sex = " ";
				}
				rowi.createCell(2).setCellValue(sex);
				//      
				if(employeeInfo.getDateOfBirth() != null && !"".equals(employeeInfo.getDateOfBirth())){
					java.text.DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
					rowi.createCell(3).setCellValue(format1.format(employeeInfo.getDateOfBirth()));
				}
				rowi.createCell(4).setCellValue(employeeInfo.getNationalIdentifier());
			}
			//          Excel      
			book.write(os);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
 Actionコードとインポートの類似点はここでは後述しない.
 
 
以上、自分で書いたPOIインポートでExcelをエクスポートするすべてのコードです.