接受前端发送的请求
@RequestMapping("/upload_excel")
public RspErr uploadExcel(@RequestParam("file") MultipartFile file) {
int rs = uploadService.uploadExcel(file);
return RspErr.err(rs);
}
在Service类的方法中处理、读取表格内容
1、使用file.getInputStream()
获取上传文件的输入流,并创建一个XSSFWorkbook
对象,用于读取Excel文件。XSSFWorkbook
是Apache POI库中的一个类,用于处理.xlsx
格式的Excel文件。
XSSFWorkbook work = new XSSFWorkbook(file.getInputStream());
2、从工作簿中获取第一个工作表(索引为0)。(如果多个工作表,用for循环)
Sheet sheet = work.getSheetAt(0);
3、创建一个ArrayList
,用于存储从Excel中读取的数据。每个元素都是一个Object[]
数组,代表Excel中的一行数据。
ArrayList<Object[]> list = new ArrayList<>();
4、从第二行开始(索引为1,因为第一行通常是标题行)遍历到最后一行。
for (int i = 1; i <= sheet.getLastRowNum(); i++) {
...
}
5、对于每一行,首先获取Row
对象,然后分别获取该行的第1、2、3个单元格(索引从0开始)的值。这里假设第一个单元格包含整数值,后两个单元格包含字符串值。
Row row = sheet.getRow(i);
Cell iDCell = row.getCell(0);
int iD = (int)iDCell.getNumericCellValue();
Cell nameCell = row.getCell(1);
String name = nameCell.getStringCellValue();
Cell remarkCell = row.getCell(2);
String remark = remarkCell.getStringCellValue();
6、将读取到的数据(iD
、name
和remark
)存储到一个Object[]
数组中,并添加到list
中。此时可以进行数据库交互或其他操作。
list.add(new Object[] {iD, name, remark});
完整代码如下:
public int uploadExcel(MultipartFile file) {
try {
XSSFWorkbook work = new XSSFWorkbook(file.getInputStream());
Sheet sheet = work.getSheetAt(0);
ArrayList<Object[]> list = new ArrayList<>();
for (int i = 1; i <= sheet.getLastRowNum(); i++) {
Row row = sheet.getRow(i);
Cell iDCell = row.getCell(0);
int iD = (int)iDCell.getNumericCellValue();
Cell nameCell = row.getCell(1);
String name = nameCell.getStringCellValue();
Cell remarkCell = row.getCell(2);
String remark = remarkCell.getStringCellValue();
list.add(new Object[] {iD, name, remark});
}
return 0;
} catch (Exception e) {
e.printStackTrace();
return 1;
}
}