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;
}
