概述
最近项目中有需要上传excel文档,后端解析入库,项目技术选型springcloud + vue + postgres.
后台接收二进制流,使用 @RequestParam(value = “file”) MultipartFile file 去接收,然后就是引入poi依赖,进行操作.
poi就是对office文件处理的依赖jar包,加入maven加入依赖后,对其进行操作.我把它提取成方法,尽量避免在controller做过多逻辑处理,我把它提取成静态方法.话不多说上代码:
public static List<Info> upload(MultipartFile file) {
//定义一个空数组
List <Info> list = new ArrayList<>();
//定义数组中的对象,全局可使用
Info coupon = null;
try {
//1. 创建一个 workbook 对象
XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream());
//2. 获取 workbook 中表单的数量
int numberOfSheets = workbook.getNumberOfSheets();
for (int i = 0; i < numberOfSheets; i++) {
//3. 获取表单,先得到每一行,在得到每一列
XSSFSheet sheet = workbook.getSheetAt(i);
//4. 获取表单中的行数
int physicalNumberOfRows = sheet.getPhysicalNumberOfRows();
for (int j = 0; j < physicalNumberOfRows; j++) {
//5. 跳过标题行
if (j == 0) {
continue;//跳过标题行
}
//6. 获取行
XSSFRow row = sheet.getRow(j);
if (row == null) {
continue;//防止数据中间有空行
}
//7. 获取列数
int physicalNumberOfCells = row.getPhysicalNumberOfCells();
//循环获得每一行中每一列数据
coupon = new Info();
for (int k = 0; k < physicalNumberOfCells; k++) {
XSSFCell cell = row.getCell(k);
//pridict里边的excell是数字型,要把先转换成String类型
if(cell != null){
cell.setCellType(Cell.CELL_TYPE_STRING);
}
String cellValue = cell.getStringCellValue();
//k为表示哪一列,用switch选择,把对应值加入对象中
//如果excel表格是给定模板,也可直接通过下标索引去取值赋值
switch (k) {
case 0:
coupon.setInfo(cellValue);
case 1:
coupon.setInfo(cellValue);
default:
break;
}
}
// 最后将解析后的数据,为csv对象,添加到List集合中
list.add(coupon);
}
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
最后
以上就是动听月饼为你收集整理的java后端处理前端上传二进制流excel文件的全部内容,希望文章能够帮你解决java后端处理前端上传二进制流excel文件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复