导入poi插件pom文件
<!--poi依赖-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency>
将activityFile写到磁盘中
//得到文件名
String originalFilename = activityFile.getOriginalFilename();
//磁盘中的文件
File file = new File("E:\\javanote\\project\\ssmCRM\\serverDir", originalFilename);
activityFile.transferTo(file);
解析excel文件
is = new FileInputStream(file);
//拿到wb
wb = new HSSFWorkbook(is);
//获取页
HSSFSheet sheet = wb.getSheetAt(0);
//循环获取行列
HSSFRow row = null;
HSSFCell cell = null;
Activity activity = null;
List<Activity> activities = new ArrayList<>();
for(int i = 1; i <= sheet.getLastRowNum(); i ++){//不获取表头,索引从1开始
//获取行
row = sheet.getRow(i);
//封装市场活动对象
activity = new Activity();
activity.setId(UUIDUtils.getUUID());
activity.setCreateBy(user.getId());
activity.setCreateTime(DateUtils.forMateDateTime(new Date()));
activity.setOwner(user.getId());
for(int j = 0; j < row.getLastCellNum(); j ++){//row.getLastCellNum():最后一列加一(总列数)
//获取列
cell = row.getCell(j);
//获取value值
String value = HSSFUtils.getCellValueByStr(cell);
if(j == 0){
activity.setName(value);
}else if (j == 1){
activity.setStartDate(value);
} else if (j == 2) {
activity.setEndDate(value);
} else if (j == 3) {
activity.setCost(value);
} else if (j == 4) {
activity.setDescription(value);
}
}
//保存所有的市场活动对象
activities.add(activity);
}
调用service层插入数据
//调用service层
int record = activityService.saveCreateActivitiesByList(activities);
returnObject.setCode(Constant.RETURN_OBJECT_CODE_SUCCESS);
returnObject.setRetData(record);
优化:由于io流是非常宝贵的资源,且访问计算机磁盘速度是比较慢的,我们通过写到磁盘上 ,有从磁盘上读取导入到服务器,需要耗费更多的时间和空间,因此直接通过流读到服务器上效率更高
//将activityFile写到磁盘中
//得到文件名
// String originalFilename = activityFile.getOriginalFilename();
// //磁盘中的文件
// File file = new File("E:\\javanote\\project\\ssmCRM\\serverDir", originalFilename);
// activityFile.transferTo(file);
//解析excel文件
// is = new FileInputStream(file);
//拿到wb
is = activityFile.getInputStream();
wb = new HSSFWorkbook(is);