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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值