java读取前端上传的Excel文件内容

 

接受前端发送的请求

    @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、将读取到的数据(iDnameremark)存储到一个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;
        }

 }

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值