使用EasyExcel实现模板下载、数据导入功能

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

这里是在springboot项目下使用EasyExcel实现模板下载、数据导入功能。 顺便记录下自己遇到的一些坑。

一.模板下载

1.在你的工程下添加模板文件
easyexcel 模板,java,开发语言

2.编写代码实现下载功能
controller

//下载模板
    @PostMapping(value="/downloadWorkplacedetail")
    public void downloadWorkplacedetail(HttpServletRequest request, HttpServletResponse response) throws FileNotFoundException {
        jobManageService.downloadWorkplacedetail(response);
    }

serviceImpl

public void downloadWorkplacedetail(HttpServletResponse response)  {
        //方法一:直接下载路径下的文件模板(这种方式貌似在SpringCloud和Springboot中,打包成JAR包时,无法读取到指定路径下面的文件,不知道记错没,你们可以自己尝试下!!!)
        try {
            //文件名称
            String fileName = "jobWorkplace.xlsx";
            //设置要下载的文件的名称
            setExcelRespProp(response,"jobWorkplace");
            InputStream input =  JobManageServiceImpl.class.getClassLoader().getResourceAsStream("/excel/" + fileName);
            OutputStream out = response.getOutputStream();
            byte[] b = new byte[2048];
            int len;
            while ((len = input.read(b)) != -1) {
                out.write(b, 0, len);
            }
            input.close();
            if (out != null) {
                out.flush();
                out.close();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

好了,到这里,一个简单的下载模板功能就实现了。不过我在项目运行中遇到了一些坑,下面记录一下。
3.项目中遇到的坑:excel文件在springboot的maven项目下打了jar包后损坏
4.解决办法:试了很多种,主要有三种方式,首推荐第一种
(1)该问题主要是maven打包时过滤导致该文件损坏,所以解决方案就是去掉过滤即可,在pom.xml文件中加入如下配置

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <nonFilteredFileExtensions><!--不加这一行,xlsx文件会被过滤,然后在maven build的时候,去target下看对应的xlsx就是损坏的-->
                        <nonFilteredFileExtension>xlsx</nonFilteredFileExtension></nonFilteredFileExtensions>
                </configuration>
            </plugin>
        </plugins>
</build>

(2).直接关闭所有过滤,resource–filtering直接设置为false:不过这样做有可能读取不到其他配置而出现错误

<resources>
     <resource>
         <directory>${project.basedir}/src/main/resources</directory>
         <filtering>false</filtering>
     </resource>
</resources>

(3).如果前两种都不怎么起效果的话…那就只能用比较笨以及麻烦的法子了:
在install命令打了jar包后,打开文件发现是损坏的,那么把jar包复制出来,用解压器打开,在文件目标位置替换一个好的进去。。。这样虽然也可以,但需要每次打jar包时都记得手动维护,所以并不推荐

二.模板导入

好了,接下来讲简单实现模板导入功能
1.添加EasyExcel依赖

<dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>easyexcel</artifactId>
      <version>3.1.1</version>
</dependency>

2.实体类

public class WorkplacedetailEntity implements Serializable {
    /**
     * 主键
     */
    @ExcelIgnore
    private Long id;
    /**
     * 姓名
     */
    @ExcelProperty("姓名")
    @ColumnWidth(20)
    private String name;
    /**
     * 电话
     */
    @ExcelProperty("电话")
    @ColumnWidth(20)
    private String phone;
}

3.controller

//导入职场明细
    @RequestMapping(value="/importWorkplacedetail")
    public ResponseData importWorkplacedetail(MultipartHttpServletRequest request) throws Exception {
        jobManageService.importWorkplacedetail(request);
        return this.successResonse(null);
    }

4.serviceImpl

public void importWorkplacedetail(MultipartHttpServletRequest request) throws IOException {
        MultipartFile file = request.getFile("file");
        System.out.println("导入职场明细功能参数file="+file);
        String unicomcode = request.getParameter("unicomcode");
        System.out.println("导入职场明细功能参数unicomcode="+unicomcode);
        DManagecomEntity query = new DManagecomEntity();
        query.setUnicomcode(unicomcode);
        Map<String, Object> data = this.queryDManagecom(query);
        List<DManagecomEntity> dManagecomEntityList = (List<DManagecomEntity>) data.get("list");
        //excel读取数据
        List<WorkplacedetailEntity> workplacedetailEntityList = EasyExcel.read(new BufferedInputStream(file.getInputStream())).head(WorkplacedetailEntity.class).sheet().doReadSync();
        System.out.println("解析到workplacedetailEntityList--------------------------------------------------------");
        System.out.println("size="+workplacedetailEntityList.size());
        System.out.println("workplacedetailEntityList="+workplacedetailEntityList);
        workplacedetailEntityList.remove(0);
        workplacedetailEntityList.stream().forEach(workplacedetailEntity -> {
            workplacedetailEntity.setStatus("0");
            if(null != dManagecomEntityList && dManagecomEntityList.size()>0){
                workplacedetailEntity.setSecondarycomcode(dManagecomEntityList.get(0).getProvincecomcode());
                workplacedetailEntity.setSecondarycomname(dManagecomEntityList.get(0).getProvincecomname());
                workplacedetailEntity.setTertiarycomcode(dManagecomEntityList.get(0).getBranchcode());
                workplacedetailEntity.setTertiarycomname(dManagecomEntityList.get(0).getBranchname());
            }

            this.insertOrUpdateWorkplacedetail(workplacedetailEntity);
        });
    }

好了,到这里就完成了。注意,本次是实现了后台接入字段名为file的file类型的参数和字段名为unicomcode的字符串参数。 如果仅仅需要一个file的话,那直接用file参数来接即可。文章来源地址https://www.toymoban.com/news/detail-641202.html

到了这里,关于使用EasyExcel实现模板下载、数据导入功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • JAVA使用POI对Word docx模板文件替换数据工具类并通过浏览器下载到本地

    需求:需要上传一个带有占位符的模板至数据库保存,然后解析模板的占位符,通过类计算结果替换模板中的占位符,并且保存至本地 难点:1.由于我数据库保存是本地保存,并没有path 所以获取模板的path是个难点 2.如何使用计算类,由于我的类是和占位符绑定的,什么样的

    2024年02月16日
    浏览(33)
  • Java下载Excel模板文件的实现

    在项目中经常会用到文件下载的功能,比如下载excel模板,这里简单记录一下实现过程 1、将模板文件放到项目资源文件目录中,也可以自定义其他位置,只要通过路径能找到该文件就行:  2、controller层写下载的接口 3、前端直接调用这个接口就可以实现下载啦

    2024年02月11日
    浏览(33)
  • #vue3 实现前端下载excel文件模板功能

    一、需求: 前端无需通过后端接口,即可实现模板下载功能。 通过构造一个 JSON 对象,使用前端常用的 第三方库 xlsx ,可以直接将该 JSON 对象转换成 Excel 文件,让用户下载模板 二、效果: 三、源码如下:

    2024年01月19日
    浏览(42)
  • vue-cli4前端实现下载本地Excel模板,以及下载静态文件的坑

    a标签的下载功能: 1:bobl ----二进制流文件 Blob对象标识一个不可变、原始数据的类文件对象。Blob表示的不一定是JavaScript原生格式的数据 2:responseType responseType它表示服务器响应的数据类型,由于后台返回来的是二进制数据,所以要把它设为‘blob’ 通过设置responseType为blo

    2024年02月02日
    浏览(31)
  • 【前端】Vue中引入excel模板并下载以及XLSX使用

    模板存放位置 src/assets/excelTemplate/模板.xls 安装模块包 新增配置,在vue.config.js中,自己比较一下,最后一段新增的chainWebpack 即可将模板下载到本地 我使用XLSX的场景,在我上传excel的时候,我需要获取它的表头以及里面的数据进行渲染到表格中,在我编辑的时候需要请求Exce

    2024年02月21日
    浏览(33)
  • 2023版IDEA的下载、安装、配置、快捷键、模板、插件与使用

    🎉 为什么会有这篇教程: 熟悉 IDEA 并能灵活熟练使用 IDEA 能极大提高您的开发效率!!! 📍 本文教程基于当前 idea 的最新版本 2023.2.2 。 📍 本文教程的所有操作图片均是实操测试截图或 gif 动态演示,合计 314 张图片,呈现的截图使用的 IDEA 的 Dark 主题。 📍 您的任何设

    2024年02月08日
    浏览(103)
  • 服务器端模板引擎art-template的下载和使用

    art-lemplate是新一代高性能JavaScript模板引擎,它可以将数据与HTML模板更加友好地结合起来,省去烦琐的字符串拼接,使代码更易于维护。 art-template模板引擎既可以在服务器端使用,也可以在浏览器端使用。此处仅讲解art-template模板引擎在服务器端的使用。art-template模板引擎的

    2024年02月08日
    浏览(27)
  • IDEA2022版教程上(下载、卸载、安装、新建Project、jdk设置、详细设置、新建/导入/删除普通java模块、修改模块名、同时打开多个工程、常用代码模板:非空判断,遍历,输出语句快捷键)

    初学Java语言,熟悉了记事本、EditPlus、NotePad++或Sublime Text3等简易开发工具的Java初学者 熟练使用其他Java集成开发环境(IDE),需要转向IDEA工具的Java工程师们 关注IDEA各方面特性的Java程序发烧友、爱好者 【注】JetBrains官方说明: 尽管我们采取了多种措施确保受访者的代表性

    2024年02月07日
    浏览(42)
  • .net core使用Html模板转PDF文件并下载的业务类封装

    前言:我这里文件下载的模板选型优先考虑html模板,上手容易,前后端通用,有了模板后就需要有转换了,html转PDF采用第三方包:DinkToPdf(1.0.8),下面是代码核心类:   重点:html转PDF的三方包有很多,我目前采用的是支持跨平台(windows和linux)的包源:DinkToPdf,这里提一嘴

    2024年02月09日
    浏览(82)
  • easyExcel模板数据导入数据库

    最近项目中需要用到Excel表格的上传下载功能,于是选择了EasyExcel这款工具,总的来说非常的好用,下面就做一个简单的演示。 官方文档地址   EasyExcel · 语雀 Alibaba Easy Excel - 简单、省内存的Java解析Excel工具 | 首页 pom.xml 中需要添加的依赖 这里用到了  @ExcelProperty  注解,这

    2023年04月08日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包