最近项目中有需要上传excel文档,后端解析入库,项目技术选型springcloud + vue + postgres.
后台接收二进制流,使用 @RequestParam(value = “file”) MultipartFile file 去接收,然后就是引入poi依赖,进行操作.
poi就是对office文件处理的依赖jar包,加入maven加入依赖后,对其进行操作.我把它提取成方法,尽量避免在controller做过多逻辑处理,我把它提取成静态方法.话不多说上代码:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58public 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文件内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复