Java解析excel表格

前几天实习过程中,遇到了一个需求,导入excel表单,对数据进行分析。上网也搜集到了利用Apache的POI可以对excel表单进行操作。接下来就是具体的实战例子:

前置条件:搭建一个Springboot项目,前后台都基本写好。

具体的POI API文档链接:http://poi.apache.org/apidocs/3.17/

1、添加依赖

 <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.17</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.17</version>
 </dependency>

2、编写接口

@RestController
@Slf4j
public class UploadController {

    @RequestMapping("/uploadExcel")
    public String uploadExcel(@RequestParam(required = true,value = "excelFile") MultipartFile excelFile) {
        Workbook wb = null;
        try{
            String fileName = excelFile.getOriginalFilename();
            if (fileName.endsWith("xls")) {
                //Excel 2003
                wb = new HSSFWorkbook(excelFile.getInputStream());
            } else if (fileName.endsWith("xlsx")) {
                // Excel 2007/2010
                wb = new XSSFWorkbook(excelFile.getInputStream());
            }
        } catch (Exception e) {
            log.error(e.getMessage());
        }
        //获取第几个excel表格,下标从0开始
        Sheet sheet = wb.getSheetAt(0);
        //获取表格最后一行的行号,下标从0开始
        int lastRowNum = sheet.getLastRowNum();
        List<Map<Integer,String>> list = new ArrayList<>(lastRowNum);
        Map<Integer,String> map;
        for (int i = 0; i < lastRowNum; i++) {
            Row row = sheet.getRow(i);
            //获取该行第几个单元格,下标从0开始
            //先将单元格转换成String类型的
            row.getCell(0).setCellType(CellType.STRING);
            row.getCell(1).setCellType(CellType.STRING);
            String firstValue = row.getCell(0).getStringCellValue();
            String secondValue = row.getCell(1).getStringCellValue();
            map = new TreeMap<>();
            map.put(1,firstValue);
            map.put(2,secondValue);
            list.add(map);
        }
        String jsonString = JSON.toJSONString(list);
        return jsonString;
    }
}

3、测试结果

将excel表格创建好,接着用postman进行测试。

500

测试成功!

 

       

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值