不积跬步,无以至千里

博客园 首页 新随笔 联系 订阅 管理

EXCEL导入涉及的注意点:

    EXCEL导入时去除多余空格
    单元格的合并

- 第一步:通过文件路径、文件名读取EXCEL信息

package com.fh.util;

import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.util.NumberToTextConverter;


/**
 * 从EXCEL导入到数据库
 * 创建人:FH Q313596790
 * 创建时间:2014年12月23日
 * @version
 */
public class ObjectExcelRead {

    /**
     * @param filepath //文件路径
     * @param filename //文件名
     * @param startrow //开始行号
     * @param startcol //开始列号
     * @param sheetnum //sheet
     * @return list
     */
    public static List<Object> readExcel(String filepath, String filename, int startrow, int startcol, int sheetnum) {
        List<Object> varList = new ArrayList<Object>();

        try {
            File target = new File(filepath, filename);
            FileInputStream fi = new FileInputStream(target);
            HSSFWorkbook wb = new HSSFWorkbook(fi);
            HSSFSheet sheet = wb.getSheetAt(sheetnum);                     //sheet 从0开始
            int rowNum = sheet.getLastRowNum() + 1;                     //取得最后一行的行号

            for (int i = startrow; i < rowNum; i++) {                    //行循环开始
                
                PageData varpd = new PageData();
                HSSFRow row = sheet.getRow(i);                             //行
                int cellNum = row.getLastCellNum();                     //每行的最后一个单元格位置
                if(isRowEmpty(row)) {
                    break;
                }
                for (int j = startcol; j < cellNum; j++) {                //列循环开始
                    
                    HSSFCell cell = row.getCell(j);  
                    String cellValue = null;
                    if (null != cell) {
                        switch (cell.getCellType()) {     // 判断excel单元格内容的格式,并对其进行转换,以便插入数据库
                        case 0:
                            cell.setCellType(1);//强转成字符串
                            cellValue = cell.getStringCellValue();                                                                            
                            break;
                        case 1:
                            cellValue = cell.getStringCellValue();
                            break;
                        case 2:
                            cellValue = NumberToTextConverter.toText(cell.getNumericCellValue());
                            break;   
                        case 3:
                            cellValue = "";
                            break;
                        case 4:
                            cellValue = String.valueOf(cell.getBooleanCellValue());
                            break;
                        case 5:
                            cellValue = String.valueOf(cell.getErrorCellValue());
                            break;
                        }
                    } else {
                        cellValue = "";
                    }
                    
                    varpd.put("var"+j, cellValue);
                    
                }
                varList.add(varpd);
            }

        } catch (Exception e) {
            System.out.println(e);
        }
        
        return varList;
    }
    
    **//去除EXCEL中的空行**
    public static boolean isRowEmpty(Row row) {
           for (int c = row.getFirstCellNum(); c < row.getLastCellNum(); c++) {
               Cell cell = row.getCell(c);
               if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK)
                   return false;

           }
           return true;
        }  
    
}

    调用读取EXCEL的方法

/**从EXCEL导入到数据库
     * @param file
     * @return
     * @throws Exception
     */
    @RequestMapping(value="/readExcel")
    public ModelAndView readExcel(
            @RequestParam(value="excel",required=false) MultipartFile file
            ) throws Exception{
        FHLOG.save(Jurisdiction.getUsername(), "从EXCEL导入到数据库");
        ModelAndView mv = this.getModelAndView();
        PageData pd = new PageData();
        if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;}
        if (null != file && !file.isEmpty()) {
            String filePath = PathUtil.getClasspath() + Const.FILEPATHFILE;                                //文件上传路径
            String fileName =  FileUpload.fileUp(file, filePath, "userexcel");                            //执行上传
            List<PageData> listPd = (List)ObjectExcelRead.readExcel(filePath, fileName, 3, 0, 0);          //(filePath, fileName, 2, 0, 0)执行读EXCEL操作,读出的数据导入List 2:从第3行开始;0:从第A列开始;0:第0个sheet
            for(int i=0;i<listPd.size();i++){
                pd.put("ET_ID", this.get32UUID());
                pd.put("ET_NAME", listPd.get(i).getString("var1"));
                pd.put("ET_SEX", listPd.get(i).getString("var2"));   
                pd.put("ET_BIRTH", listPd.get(i).getString("var3"));
                pd.put("ET_POLITICS", listPd.get(i).getString("var4"));
                pd.put("ET_COUNTRY", listPd.get(i).getString("var5"));

                pd.put("ET_NATIONALITY_PROV", listPd.get(i).getString("var6"));
                pd.put("ET_NATIONALITY_CITY", listPd.get(i).getString("var7"));
                pd.put("ET_NATIONALITY_AREA", listPd.get(i).getString("var8"));

                pd.put("ET_HOMEPLACE_PROV", listPd.get(i).getString("var9"));
                pd.put("ET_HOMEPLACE_CITY", listPd.get(i).getString("var10"));
                pd.put("ET_HOMEPLACE_AREA", listPd.get(i).getString("var11"));

                pd.put("ET_DEGREE", listPd.get(i).getString("var12"));
                pd.put("ET_SCHOOL", listPd.get(i).getString("var13"));
                pd.put("ET_PROFESSION1", listPd.get(i).getString("var14"));
                pd.put("ET_PROFESSION2", listPd.get(i).getString("var15"));
                pd.put("ET_PROFESSION3", listPd.get(i).getString("var16"));
                pd.put("ET_RESEARCHAREA1", listPd.get(i).getString("var17"));
                pd.put("ET_RESEARCHAREA2", listPd.get(i).getString("var18"));
                pd.put("ET_RESEARCHAREA3", listPd.get(i).getString("var19"));
              
                pd.put("ET_HONOR", listPd.get(i).getString("var20"));
                pd.put("ET_ACHIEVEMENT", listPd.get(i).getString("var21"));
                pd.put("ET_LIFEHISTORY", listPd.get(i).getString("var22"));
                pd.put("ET_INTENTDEVELOP", listPd.get(i).getString("var23"));
                pd.put("ET_EMPLOYEE", listPd.get(i).getString("var24"));
                pd.put("ET_PROFESSIONAL", listPd.get(i).getString("var25"));
                pd.put("ET_TEL", listPd.get(i).getString("var26"));
                pd.put("ET_MAIL", listPd.get(i).getString("var27"));
                pd.put("ET_CONTECT_NAME", listPd.get(i).getString("var28"));
                pd.put("ET_CONTECT_TEL", listPd.get(i).getString("var29"));
                pd.put("ET_CONTECT_MAIL", listPd.get(i).getString("var30"));    
                eliteInforService.saveE(pd);
            }  
            /*存入数据库操作======================================*/
            mv.addObject("msg","success");
        }
        mv.setViewName("save_result");
        return mv;
    }

posted on 2019-03-14 18:44  Zeroassetsor  阅读(195)  评论(0)    收藏  举报