解析Excel
上传Excel表格,将表格内容保存到数据库,直接上代码。
import java.io.IOException;
import java.io.InputStream;
import org.springframework.web.multipart.MultipartFile;
import org.apache.poi.ss.usermodel.*;
@ResponseBody
@RequestMapping(value = "/parseWorkers", produces = "application/json; charset=utf-8")
public ModelAndView parseExcel(MultipartFile wordersFile){
int totalNum = 0;//导入成功条数
long size = wordersFile.getSize();
InputStream is = null;
Workbook wb = null;
//Excel表格大小设置:小于2m
if((size/1024) < 2048){
try {
is = wordersFile.getInputStream();
wb = WorkbookFactory.create(is);
//表格下方的张数
int num = wb.getNumberOfSheets();
for (int i = 0; i < num; i++) {
Sheet sheet = wb.getSheetAt(i);
//获取表格列数
int rows = sheet.getPhysicalNumberOfRows();
for (int j = 1; j < rows; j++) {
try{
Row row = sheet.getRow(j);
//int cells = row.getPhysicalNumberOfCells();
//表格行数,从0开始为第一个
Cell cell1 = row.getCell(0);
//数据库中第一位为int类型,所以将cell1 转为Integer 类型的m
double d=Double.parseDouble(String.valueOf(cell1));
Integer m=(int)d;
Cell cell2 = row.getCell(1);
Cell cell3 = row.getCell(2);
Cell cell4 = row.getCell(3);
Cell cell5 = row.getCell(4);
Cell cell6 = row.getCell(5);
//把表格内容set进实体类中
FileEntity entity = new FileEntity();
//这里都用name代替
entity.setId(String.valueOf(m));
entity.setName1(String.valueOf(cell2));
entity.setName2(String.valueOf(cell3));
entity.setName3(String.valueOf(cell4));
entity.setName4(String.valueOf(cell5));
entity.setName5(String.valueOf(cell6));
//将数据保存到数据库,该方法不在提供
int res=userSalaryService.add(entity);
ModelAndView modelAndView =new ModelAndView();
if (res<1){
modelAndView.addObject("message","数据保存失败");//返回的信息
modelAndView.setViewName("list");//返回的页面
return modelAndView;
}
totalNum++;
} catch (Exception e) {
e.printStackTrace();
continue;
}
}
}
modelAndView.addObject("message","导入成功!本次共导入"+totalNum+"条数据");//返回的信息
modelAndView.setViewName("list");//返回的页面
return modelAndView;
} catch (Exception e) {
modelAndView.addObject("message","表格解析异常,上传失败");//返回的信息
modelAndView.setViewName("list");//返回的页面
return modelAndView;
}finally{
try {
if(wb != null){
wb.close();
}
if(is!= null){
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
modelAndView.addObject("message","文件超过最大限制");//返回的信息
modelAndView.setViewName("list");//返回的页面
return modelAndView;
}
}
简单的实现了表格的解析和保存到数据库的功能,具体保存导数据库的代码并没有贴出来。