在网上也看了好多POI的帖子最后总结一下,选了个用的顺手的,首先基于springBoot,在pom.xml中添加以下依赖
<!-- POI -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.10-FINAL</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.10-FINAL</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.10-FINAL</version>
</dependency>
Controller层,直接接收文件
import com.alibaba.fastjson.JSON; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; @RequestMapping("/demo") public class DemoController{ @Autowired private DemoService demoService; @RequestMapping(value = "/addBatch", method = RequestMethod.POST) public String addStudentBatch(@RequestParam("file") MultipartFile file){ |
try{
List<Demo> demoList = new ArrayList<Demo>();
Workbook book = null;
//判断是xls还是xlsx
try {
book = new XSSFWorkbook(studentsFile.getInputStream());
} catch (Exception ex) {
book = new HSSFWorkbook(new POIFSFileSystem(studentsFile.getInputStream()));
}
//获取一共有多少sheet,遍历
int numberOfSheets = book.getNumberOfSheets();
for (int i=0; i<numberOfSheets; i++) {
Sheet sheet = book.getSheetAt(i);
//获取sheet中有多少行,遍历每一行
int physicalNumberOfRows = sheet.getPhysicalNumberOfRows();
for (int j=0;j<physicalNumberOfRows;j++){
if (j == 0) {
continue;//标题行
}
Demo demo = new Demo();
Row row = sheet.getRow(j);//获得当前行数据
demo .setName(row.getCell(0).getStringCellValue()); //姓名
String sex = row.getCell(1).getStringCellValue();
if("男".equals(sex)){
demo .setSex(1); //性别
}else if("女".equals(sex)){
demo .setSex(0); //性别
}
demo .setStudyYear((long) row.getCell(2).getNumericCellValue());
demoList .add(demo );
}
}
int num = bmStudentService.addStudentBatch(studentList);
if(num>0){
r.setResult(num);
r.setStatus("ok");
}else{
r.setResult(0);
r.setStatus("error");
}
}catch (Exception e){
r.setResult(e.getClass().getName() + ":" + e.getMessage());
r.setStatus("error");
e.printStackTrace();
}
return JSON.toJSONString(r);
}
JsonResult是自己封装的结果类;剩下的就是传到服务层自己去实现业务就可以了