2021-02-09-SpringBoot整合autopoi实现excel表的导入导出功能

SpringBoot整合autopoi

pom.xml

  • 注意,私服那个放在外面
   <!--私服-->
    <distributionManagement>
        <repository>
            <id>jeecg</id>
            <name>jeecg Repository</name>
            <url>http://maven.jeecg.com:8090/nexus/content/repositories/jeecg</url>
        </repository>
        <snapshotRepository>
            <id>jeecg-snapshots</id>
            <name>jeecg Snapshot Repository</name>
            <url>http://maven.jeecg.com:8090/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
    <dependencies>
       <dependency>
            <groupId>org.jeecgframework</groupId>
            <artifactId>autopoi-web</artifactId>
            <version>1.0.3</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-codec</groupId>
                    <artifactId>commons-codec</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
      </dependencies>

实体类

  • 加上@ExcelTarget、 @Excel这两个注解就行了
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("T_TZSB_FACTORY_OUT_PERSON")
@ExcelTarget(value = "FactoryOutPersonEntity")
public class FactoryOutPersonEntity {
    //id
    @TableId(type = IdType.AUTO)
    private Integer id;
    // 证件编号
    @Excel(name = "证件编号",width = 15)
    private String certificateNum;
    //姓名
    @Excel(name = "姓名",width = 15)
    private String personName;
    //性别
    @Excel(name = "性别",width = 15)
    private String sex;

}

导入功能

  • 前端只需传一个MultipartFile对象过来就行,跟平常文件上传一样
    @RequestMapping(value = "/importExcel")
    @ResponseBody
    public ResultEntity<FactoryOutPersonEntity> importExcel(@RequestParam("file") MultipartFile file) {
        log.info("导入厂外人员信息");
        List<FactoryOutPersonEntity> list = null;
        try {
            ImportParams params = new ImportParams();
            //表格标题所在行,计数从0开始
            params.setTitleRows(0);
            //head头部所在行,计数从0开始
            params.setHeadRows(0);
            //表格sheet数量
            //params.setSheetNum(9);
            //最好不要设置为true,否则导入一次excel服务器会重启一次,原因不明
//            params.setNeedSave(false);
            InputStream inputStream = file.getInputStream();
            list = ExcelImportUtil.importExcel(inputStream, FactoryOutPersonEntity.class, params);
            //批量插入,出错回滚
            int insert = factoryOutPersonService.addBatch(list);

        } catch (Exception e) {
            e.printStackTrace();
            return ResultEntity.FAILMsg("失败");
        }
        return ResultEntity.SUCCESSMsg("成功", list);
    }

导出功能

  • 导出功能也简单,只需要你查一下数据库获得你要导出的数据集合,再把传个集合对应的对象类型就ok,前端只需访问/exportXls,即可得到一个excel文件
 @RequestMapping(value = "/exportXls")
    public ModelAndView exportXls(FactoryOutPersonEntity fope) {
        log.info("导出厂外人员信息");
        //组建查询条件
        QueryWrapper<FactoryOutPersonEntity> wrapper = new QueryWrapper<>();
        if (!StringUtil.isEmpty(fope.getCertificateNum())) {
            wrapper.eq("CERTIFICATE_NUM", fope.getCertificateNum());
        }
        if (!StringUtil.isEmpty(fope.getPersonName())) {
            wrapper.eq("PERSON_NAME", fope.getPersonName());
        }
        if (!StringUtil.isEmpty(fope.getWorkProject())) {
            wrapper.eq("WORK_PROJECT", fope.getWorkProject());
        }
        List<FactoryOutPersonEntity> factoryOutPersonEntities =   factoryOutPersonService.getFactoryOutPersonEntities(wrapper);

        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
        //导出文件名称
        mv.addObject(NormalExcelConstants.FILE_NAME, "厂外人员信息表");
        //注解对象Class
        mv.addObject(NormalExcelConstants.CLASS, FactoryOutPersonEntity.class);
        //自定义导出字段
        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams());
        //导出数据列表
        mv.addObject(NormalExcelConstants.DATA_LIST, factoryOutPersonEntities);
        return mv;
    }

猜你喜欢

转载自blog.csdn.net/qq_41270550/article/details/113755338