使用poi完成excel表的导入,将数据保存到数据库内,包含合并单元格

本文介绍了如何使用Spring Boot和MyBatis Plus结合Apache POI处理Excel导入功能,特别是解决合并单元格的问题。首先创建相关依赖,接着详细讲解了遍历表格、判断和处理合并单元格的步骤,以及如何读取数据并将其导入到数据库的两张表中。通过创建模板类接收Excel数据,并在Controller层调用进行导入操作。作者分享了开发中遇到的问题和技术解决方案。
摘要由CSDN通过智能技术生成

无论在学习中还是工作中,都会遇到excel表导入功能,接下里我们就来实现这个功能。

平时呢,大家可能对阿里的easypoi比较熟悉,简简单单的一两行代码就能够进行导入和导出的操作。但是在很多地方,我们还是用到了Apache的poi。

使用技术是spring boot+mybatis plus

让我们来看看表格

 需求就是将表格填入

第一步,创建依赖

<!-- excel工具 -->
<dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi-ooxml</artifactId>
   <version>4.1.2</version>
</dependency>

第二步,通过以下的方法进行遍历(注意!!!如果有合并单元格,可以进行判断,这个问题也烦恼了很久)

合并单元格的解析流程:

  1. 先判断当前表格有没有合并单元格
  2. 再判断当前行中的当前列有没有合并单元格
  3. 有的话调用方法进行判断单元格占了几行几列
  4. 然后将空的值进行赋值
  5. 然后读出进行导入
@Override

    public String uploadExcel(MultipartFile file) throws IOException {

        try {

        LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();

        InputStream inputStream = file.getInputStream();

            Workbook workbook = WorkbookFactory.create(inputStream);

            Sheet sheet = workbook.getSheetAt(0);

            //获取行数

            int rowCount = sheet.getPhysicalNumberOfRows();

            System.out.println(rowCount);

            Row rowTitle = sheet.getRow(0);

            //获取列数

            int cellCount = rowTitle.getPhysicalNumberOfCells();

            List<SchoolListModel> list = new ArrayList<>()
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值