SpringBoot实现导入Excel功能

废话不多说,直接上代码

1.pom.xml导入依赖

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.9</version>
        </dependency>
        <!--xlsx(07)-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.9</version>
        </dependency>

        <!-- 其它 -->
        <!-- 1. 文件上传 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <!-- 2. io -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>

2.配置application.properties

spring.servlet.multipart.maxFileSize=10240MB
spring.servlet.multipart.maxRequestSize=10240MB

# 文件上传自定义配置
# 5MB = 5242880 byte
# 10GB = 10737418240 byte
upload.maxFaceImageSize=5242880
upload.maxVideoSize=10737418240

3.实体类(根据你自己的需求来定义)

package com.example.dnjdzy.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.util.Date;
import java.util.List;

/**
 * 被监督单位对象 bjddw
 * @date 2022-09-19
 */

@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class Bjddw
{
    private static final long serialVersionUID = 1L;

    /** 被监督单位编号 */
    private Integer id;

    /** 上级部门 */
    private String sjbm;

    /** 部门名称 */
    private String bmmc;

    /** 被监督单位类型 */
    private Integer bjddwlx;

    /** 层级类型 */
    private String cjlx;

    /** 联系室组 */
    private String lxsz;

    /** 排序 */
    private Integer px;

    /** 部门id */
    private Integer bmId;

    /** 父id */
    private Integer parentId;

    /** 创建时间 */
    private Date createTime;

    /** 子List */
    private List<Bjddw> children;
}

4.controller层(根据自己需求用HSSF或者XSSF)

/**
     * 批量导入按钮
     * @throws IOException
     */
    @RequestMapping("/import")
    @ResponseBody
    public void getMessage()throws IOException {
        // 1.通过流读取Excel文件
        FileInputStream inputStream = new FileInputStream("E:\\公司需求文档\\批量导入.xls");
        // 2.通过poi解析流 HSSFWorkbook 处理流得到的对象中 就封装了Excel文件所有的数据
        XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
        // 3.从文件中获取表对象  getSheetAt通过下标获取
//        HSSFSheet sheet = workbook.getSheetAt(0);   不支持用HSSF 所以换成了XSSF
        XSSFSheet sheet = workbook.getSheetAt(0);
        // 4.从表中获取到行数据  从第二行开始 到 最后一行  getLastRowNum() 获取最后一行的下标
        int lastRowNum = sheet.getLastRowNum();

        for (int i = 1; i <= lastRowNum; i++) {
            //通过下标获取行
            XSSFRow row = sheet.getRow(i);
            // 从行中获取数据

            /**
             * getNumericCellValue() 获取数字
             * getStringCellValue 获取String
             */
            String sjbm = row.getCell(0).getStringCellValue();
            String bmmc = row.getCell(1).getStringCellValue();
            double bjddwlx = row.getCell(2).getNumericCellValue();
            String cjlx = row.getCell(3).getStringCellValue();
            String lxsz = row.getCell(4).getStringCellValue();
            double px = row.getCell(5).getNumericCellValue();
            double bmId = row.getCell(6).getNumericCellValue();
            double parentId = row.getCell(7).getNumericCellValue();

            Bjddw bjddw = new Bjddw();
            bjddw.setSjbm(sjbm);
            bjddw.setBmmc(bmmc);
            bjddw.setBjddwlx((int) bjddwlx);
            bjddw.setCjlx(cjlx);
            bjddw.setLxsz(lxsz);
            bjddw.setPx((int) px);
            bjddw.setBmId((int) bmId);
            bjddw.setParentId((int) parentId);
            bjddw.setCreateTime(new Date());
            bjddwService.insertBjddw(bjddw);

        }
    }

5.Service接口

    /**
     * 新增被监督单位
     * 
     * @param bjddw 被监督单位
     * @return 结果
     */
    public String insertBjddw(Bjddw bjddw);

6.ServiceImpl实现类

    /**
     * 新增被监督单位
     * 
     * @param bjddw 被监督单位
     * @return 结果
     */
    @Override
    public String insertBjddw(Bjddw bjddw)
    {
        bjddwMapper.insertBjddw(bjddw);
        return "新增成功";
    }

7.Mapper层

    /**
     * 新增被监督单位
     * 
     * @param bjddw 被监督单位
     * @return 结果
     */
    public int insertBjddw(Bjddw bjddw);

8.mapper.xml文件中写sql语句

<insert id="insertBjddw"  useGeneratedKeys="true" keyProperty="id">
        insert into bjddw
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="sjbm != null">sjbm,</if>
            <if test="bmmc != null">bmmc,</if>
            <if test="bjddwlx != null">bjddwlx,</if>
            <if test="cjlx != null">cjlx,</if>
            <if test="lxsz != null">lxsz,</if>
            <if test="px != null">px,</if>
            <if test="createTime != null">create_time,</if>
            <if test="bmId != null">bm_id,</if>
            <if test="parentId != null">parent_id,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="sjbm != null">#{sjbm},</if>
            <if test="bmmc != null">#{bmmc},</if>
            <if test="bjddwlx != null">#{bjddwlx},</if>
            <if test="cjlx != null">#{cjlx},</if>
            <if test="lxsz != null">#{lxsz},</if>
            <if test="px != null">#{px},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="bmId != null">#{bmId},</if>
            <if test="parentId != null">#{parentId},</if>
         </trim>
    </insert>

9.设置Excel文件

 10.测试是否可以导入

 

11.查看数据库是否存入数据 

 成功存入到了数据库中

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spring Boot可以使用Apache POI库来实现批量导入Excel。以下是实现步骤: 1. 添加依赖 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> ``` 2. 创建实体类 创建一个实体类来存储Excel中的数据。 3. 创建工具类 创建一个工具类来读取Excel文件并将数据存储到实体类中。 4. 创建Controller 创建一个Controller来处理上传Excel文件的请求,并调用工具类来读取Excel文件。 5. 测试 使用Postman等工具测试上传Excel文件的功能。 以上就是使用Spring Boot批量导入Excel的基本步骤。 ### 回答2: Spring Boot是目前非常流行的一种后端开发框架,其提供了方便快捷的开发工具和强大的框架支持,其中批量导入Excel是常见的功能之一。 在Spring Boot实现批量导入Excel可以使用以下步骤: 1. 读取Excel:使用Apache POI或EasyExcelJava工具库读取Excel文件中的数据。可以将Excel文件转换为Java对象或者List对象。 2. 解析Excel:根据Excel表的结构定义将数据解析到表格中。解析时需要校验数据是否符合规范要求,例如单元格类型、格式、长度、有效性等等。 3. 验证数据:对解析后的数据进行批量校验,以确保数据的合法性和完整性。不符合分析定义的数据需要标记为无效并记录相应错误日志。 4. 存储数据:将经验证的数据存储到数据库中,通常使用Spring的JPA或Spring JDBC。 5. 反馈进度:当导入数据量较大时,可以使用异步方式导入数据,并及时通知用户导入进度。 6. 异常处理: 对导入过程中遇到的运行时错误、系统异常等进行捕捉和处理,以确保数据能够正确地导入数据库中。 综上所述,Spring Boot实现批量导入Excel需要涉及到解析Excel、验证数据、存储数据、反馈进度、异常处理等多个方面,在实现时需要注意数据的合法性和完整性,以确保导入的数据准确无误,以满足业务需求。 ### 回答3: Spring Boot是一种开源的Java框架,具有简单易用、快速开发和高效性的特点,可用于编写现代应用程序。在许多实际场景中,我们经常需要通过导入Excel文件来批量处理数据。因此,我们可以使用Spring Boot来批量导入Excel。 要实现调用和解析Excel功能,我们需要使用Apache POI相关的API。Apache POI是一个开源的Java库,用于处理Microsoft Office格式文件,例如Excel等。使用这个API,我们可以非常方便地处理Excel文件。 以下是批量导入Excel的步骤: 1. 创建一个Spring Boot项目:在创建Spring Boot项目时,我们需要导入Apache POI相关的依赖。例如: ``` <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> ``` 2. 创建Excel模板:在导入Excel文件之前,我们需要准备一个Excel模板。该模板包含Excel文件中要导入的列和行。对于每个需要导入的字段,模板应包含相应的列标头,以确保正确读取。 3. 解析Excel文件:一旦我们有了Excel模板,我们可以通过编写Java代码来解析Excel文件。解析Excel文件需要在代码中创建FileInputStream和Workbook对象。通过遍历每个行和列,我们可以将Excel数据保存到对象中以进一步处理。 4. 执行数据操作:一旦我们将数据解析到Java对象中,我们可以在代码中执行需要的任何操作,例如写入数据库表或生成报告。 由于Excel文件可能会包含大量数据,批量导入可能需要花费一定的时间。因此,我们应该为用户提供一个进度条来显示导入的状态。为了提高效率,也可以使用多线程方法来处理大量数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值