spring boot 整合EasyPoi导入导出,下载模版功能

这篇具有很好参考价值的文章主要介绍了spring boot 整合EasyPoi导入导出,下载模版功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引入依赖

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.13</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.0</version>
        </dependency>
        <!--easypoi-->
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-spring-boot-starter</artifactId>
            <version>4.4.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.11.0</version>
        </dependency>

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.22</version>
        </dependency>

    </dependencies>

连接数据库以及其他配置

server:
  port: 9000
  servlet:
    context-path: /

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/my?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8
    username: root
    password: zzybzb

mybatis:
  mapper-locations: classpath:/mappers/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

logging:
  level:
    root: info
    com:
      pzz:
        dao: debug


# 开启swagger
swagger:
  enable: true

swagger的配置(这里使用swagger测试接口)

@Configuration
@ConditionalOnProperty(prefix = "swagger",value = {"enable"},havingValue = "true")
@EnableSwagger2  //开启swagger注解支持
public class SwaggerConfiguration {

	@Bean
	public Docket buildDocket() {
		/**
		 * Docket:摘要对象,通过对象配置描述文件的信息。
		 * apilnfo:设置描述文件中info。参数类型Apilnfoe'
		 * select():返回ApiSelectorBuilder对象,通过对象调用build()可以创建Docket对象
		 * ApilnfoBuilder: Apilnfo构建器。
		 */
		return new Docket(DocumentationType.SWAGGER_2)
				.apiInfo(buildApiInfo())
				.select()
				// 要扫描的API(Controller)基础包
				.apis(RequestHandlerSelectors.basePackage("com.pzz"))
				.paths(PathSelectors.any())
				.build();
	}

	private ApiInfo buildApiInfo() {
		Contact contact = new Contact("pzz","","");
		return new ApiInfoBuilder()
				//文档标题
				.title("导入导出API文档")
				//文档描述  
				.description("导入导出api")
				.contact(contact)
				//文档版本
				.version("1.0.0").build();
	}
}

实体类添加@Excel注解

package com.pzz.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;

import java.util.Date;
import java.io.Serializable;

/**
 * 系统用户表(TbUser)实体类
 *
 * @author makejava
 * @since 2023-06-21 16:49:12
 */
@Data
public class TbUser implements Serializable {
    private static final long serialVersionUID = 872169419599604137L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 用户名
     */
    @Excel(name = "姓名",width = 15)
    private String name;
    /**
     * 手机号
     */
    @Excel(name = "手机号",width = 20)
    private String phone;
    /**
     * 邮箱
     */
    @Excel(name = "邮箱",width = 20)
    private String email;
    /**
     * 专业
     */
    @Excel(name = "专业",width = 15)
    private String profession;
    /**
     * 年龄
     */
    @Excel(name = "年龄",width = 15)
    private String age;
    /**
     * 性别 , 1: 男, 2: 女
     */
    @Excel(name = "性别",width = 15,replace = {"男_1","女_2"})
    private String gender;
    /**
     * 状态
     */
    @Excel(name = "状态",width = 15)
    private String status;
    /**
     * 创建时间
     */
    @Excel(name = "创建时间",width = 25,format = "yyyy-MM-dd")
    private Date createtime;

}
  • name:Excel中的列名;
  • width:指定列的宽度;
  • needMerge:是否需要纵向合并单元格;
  • format:当属性为时间类型时,设置时间的导出导出格式;
  • desensitizationRule:数据脱敏处理,3_4表示只显示字符串的前3位和后4位,其他为*号;
  • replace:对属性进行替换;
  • suffix:对数据添加后缀。

controller接口

省略service和mapper层的代码,导入保存,导出查询,很简单的方法。

下载模版

	@Autowired
    private ResourceLoader resourceLoader;

    /**
     * 下载模版
     * @param response
     * @throws IOException
     */
    @ApiOperation("下载模版方式一")
    @GetMapping("/downloadTemplate")
    public void downloadTemplate(HttpServletResponse response) throws IOException {
        try {
            byte[] bytes = IOUtils.toByteArray(resourceLoader.getResource("classpath:templates/用户导入模版.xlsx").getInputStream());
            Workbook workbook = WorkbookFactory.create(new ByteArrayInputStream(bytes));
            ByteArrayOutputStream bo = new ByteArrayOutputStream();
            workbook.write(bo);
            bo.flush();
            byte[] array = bo.toByteArray();
            response.setHeader("Content-Type", "application/vnd.ms-excel");
            response.setHeader("Content-Disposition", "attachment;filename=" + new String("用户导入模版.xlsx".getBytes(StandardCharsets.UTF_8), "ISO-8859-1"));
            response.setCharacterEncoding("UTF-8");
            response.getOutputStream().write(array);
            response.setContentLength(array.length);
        } catch (Exception e) {
            //log.error("downloadTemplate --> download excel template failed, errorMsg: {}", e.getMessage(), e);
            throw new RuntimeException("获取模板失败");
        } finally {
            if (response.getOutputStream() != null) {
                response.getOutputStream().flush();
            }
        }
    }

    /**
     * 下载模版
     * @param response
     */
    @ApiOperation("下载模版方式二")
    @GetMapping("getTemplate")
    public void getTemplate(HttpServletResponse response) {
        List<TbUser> heroList = new ArrayList<>();
        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("用户信息列表", "用户导入"), TbUser.class, heroList);
        downLoadExcel("TBUSER.xlsx", response, workbook);
    }

    private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) {
        try {
            response.setCharacterEncoding("UTF-8");
            response.setHeader("content-Type", "application/vnd.ms-excel");
            response.setHeader("Content-Disposition",
                    "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
            workbook.write(response.getOutputStream());
        } catch (IOException e) {
            throw new RuntimeException(e.getMessage());
        }
    }

导出

	/**
     * 导出功能
     * @param map
     * @param request
     * @param response
     */
    @ApiOperation("用户导出")
    @RequestMapping(value = "/exportMemberList", method = RequestMethod.GET)
    public void exportMemberList(ModelMap map,
                                 HttpServletRequest request,
                                 HttpServletResponse response) {
        List<TbUser> tbUserList = tbUserService.getTbUserList();
        ExportParams params = new ExportParams("用户列表", "用户列表", ExcelType.XSSF);
        map.put(NormalExcelConstants.DATA_LIST, tbUserList);
        map.put(NormalExcelConstants.CLASS, TbUser.class);
        map.put(NormalExcelConstants.PARAMS, params);
        map.put(NormalExcelConstants.FILE_NAME, "memberList");
        PoiBaseView.render(map, request, response, NormalExcelConstants.EASYPOI_EXCEL_VIEW);
    }

导入

	/**
     * 导入
     * @param file
     * @return
     */
    @ApiOperation("用户导入")
    @RequestMapping(value = "/importMemberList", method = RequestMethod.POST)
    public String importMemberList(@RequestPart("file") MultipartFile file) {
        ImportParams params = new ImportParams();
        //params.setTitleRows(1);
        //去掉第一行的表头,从第二行开始
        params.setHeadRows(1);
        try {
            List<TbUser> list = ExcelImportUtil.importExcel(
                    file.getInputStream(),
                    TbUser.class, params);
            for (TbUser tbUser : list) {
                tbUserService.insert(tbUser);
            }
            System.out.println(list);
            return "success";
        } catch (Exception e) {
            e.printStackTrace();
            return "导入失败!";
        }
    }

测试

  • 导出
    spring boot 整合EasyPoi导入导出,下载模版功能
    spring boot 整合EasyPoi导入导出,下载模版功能
  • 导入
    spring boot 整合EasyPoi导入导出,下载模版功能
    spring boot 整合EasyPoi导入导出,下载模版功能
  • 下载模版

spring boot 整合EasyPoi导入导出,下载模版功能

结束!!!!!!!
hy:16文章来源地址https://www.toymoban.com/news/detail-510516.html


										我们必须把学习变成一种习惯.--《终身成长》

到了这里,关于spring boot 整合EasyPoi导入导出,下载模版功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用easypoi-spring-boot-starter 4.1.1导入excel报错NoSuchMethodError和NoSuchMethodError

    使用easypoi进行excel的导入遇到的错误以及解决办法 easypoi项目地址:https://gitee.com/lemur/easypoi easypoi的Maven依赖: 报错描述: 解决办法: XmlOptions.setEntityExpansionLimit() 错误,是 jar 包版本引起的,3.0 版本以下的 xmlbeans 中根本没有该方法,需要将jar升级到 3.0+ 版本才可以。另外

    2024年02月08日
    浏览(48)
  • EasyPoi快速入门(Excel导入导出工具)

    简介: easypoi是一款Excel快速导入导出的工具,最近有所使用,结合了网上的一些用法和官方文档的介绍,在在这里总结一下最简单的esaypoi导入Excel的实现,网上很多教程都已经封装了工具类,虽然方便,但第一次接触easypoi可能看的不是清晰,现在总结一下最为直观的SpringBoot集成easypoi快

    2023年04月22日
    浏览(42)
  • 【java】EasyPoi导出导入(合并单元格)

    2024年02月14日
    浏览(45)
  • springboot项目利用easypoi导入导出(包括一对多导出的动态列选择,以及普通导入)

    因为项目只涉及到一对多的导出,以及普通的导入,所以,本文只会涉及这方面的使用 导入的时候,有校验,如果有错误数据,就会返回错误数据的所在行,以及错误信息(如果需要返回错误信息的所在的那几行数据以及错误信息的excel文件的话,可以看看第三个参考文章,

    2023年04月21日
    浏览(39)
  • spring boot导入导出excel,集成EasyExcel

    一、安装依赖 二、新建导出工具类 三、新建实体类 @ExcelProperty: 核心注解,value属性可用来设置表头名称,converter属性可以用来设置类型转换器; @ColumnWidth: 用于设置表格列的宽度; @DateTimeFormat: 用于设置日期转换格式; @NumberFormat: 用于设置数字转换格式。 四、如果需

    2024年02月06日
    浏览(58)
  • 使用Spring Boot和EasyExcel的导入导出

    在当今信息化社会,数据的导入和导出在各种业务场景中变得越来越重要。为了满足复杂的导入导出需求,结合Java编程语言、Spring Boot框架以及EasyExcel库,我们可以轻松地构建出强大而灵活的数据处理系统。本文将引导您通过一个案例学习如何使用这些工具,实现一个复杂的

    2024年02月14日
    浏览(38)
  • 【Java Easypoi & Apache poi】 Word导入与导出

            如果这里造成了读取resources下的文件返回前端乱码问题:除了HttpServletResponse响应中设置字体问题,还有可能是因为在编译期文件就已经乱码了,所以需要在pom.xml中增加以下配置。

    2024年02月10日
    浏览(56)
  • Spring Boot集成EasyExcel实现excel导入导出操作

    Easy Excel 官网 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很

    2024年02月14日
    浏览(41)
  • Spring Boot中Excel数据导入导出的高效实现

    🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 🤖 洛可可白 :个人主页 🔥 个人专栏 :✅前端技术 ✅后端技术 🏠 个人

    2024年03月15日
    浏览(43)
  • Hbase-技术文档-spring-boot整合使用hbase--简单操作增删改查--提供封装高可用的模版类

    使用spring-boot项目来整合使用hbase。 依赖声明表示将把Apache HBase客户端库的2.4.3版本添加到项目中。HBase是一个分布式、可扩展的大数据存储系统,它基于Google的Bigtable模型,并使用了Hadoop分布式文件系统作为底层存储。HBase客户端库是用于与HBase数据库进行交互的工具库,提供

    2024年02月07日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包