广告
返回顶部
首页 > 资讯 > 精选 >Java+EasyExcel如何实现文件的导入导出
  • 857
分享到

Java+EasyExcel如何实现文件的导入导出

2023-06-22 04:06:11 857人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关Java+Easyexcel如何实现文件的导入导出,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。引言项目中需要Excel文件的导入与导出Excel并下载,例如,导入员工信息,导

这篇文章将为大家详细讲解有关Java+Easyexcel如何实现文件的导入导出,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

引言

项目中需要Excel文件的导入与导出Excel并下载,例如,导入员工信息,导出员工信息,手动输入比较繁琐,所以本篇博文教大家如何在Java中导入Excel文件与导出Excel文件

技术栈

Excel工具:EasyExcel

选用框架spring、Spring mvcmybatisSSM

项目构建管理工具:Maven

需求:

要求利用excel工具实现员工信息的导入与导出

导出要求为输出到指定位置并下载

导入文件导入后,存入数据库,并显示在页面

导出文件,点击导出后写入指定地址,并下载该文件

效果图

Java+EasyExcel如何实现文件的导入导出

项目结构

Java+EasyExcel如何实现文件的导入导出

核心源码

导入阿里巴巴EasyExcel依赖

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

这里采用EasyExcel,为什么不采用POI呢?

因为EasyExcel是对POI做的一个升级,POI相对于笨重,EasyExcel去除了一些POI比较繁琐的东西,所以EasyExcel比较轻量级,所以本文采用EasyExcel

EasyExcel是阿里巴巴的产品,POI是Apache基金会的开源产品,EasyExcel对POI做了一个升级

核心实体类

package com.wanshi.spring.entity;import com.alibaba.excel.annotation.ExcelIgnore;import com.alibaba.excel.annotation.ExcelProperty;import com.alibaba.excel.annotation.write.style.ColumnWidth;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@Data@NoArgsConstructor@AllArgsConstructorpublic class Employee {    @ExcelIgnore    private String noid;    @ColumnWidth(20)    @ExcelProperty("员工姓名")    private String emp_name;    @ColumnWidth(20)    @ExcelProperty("员工年龄")    private Integer emp_age;    @ExcelIgnore    private Integer emp_sex;    //冗余字段    @ColumnWidth(20)    @ExcelProperty("员工性别")    private String str_emp_sex;    @ColumnWidth(20)    @ExcelProperty("员工工资")    private Double emp_salary;    @ColumnWidth(20)    @ExcelProperty("员工住址")    private String emp_address;    @ColumnWidth(20)    @ExcelProperty("员工岗位")    private String emp_position;    //分页相关,当前页与每页的数据条数    @ExcelIgnore    private Integer pageNum;    @ExcelIgnore    private Integer pageSize;}

核心监听器类

EmployeeListener类:

package com.wanshi.spring.listener;import com.alibaba.excel.context.AnalysisContext;import com.alibaba.excel.event.AnalysisEventListener;import com.wanshi.spring.entity.Employee;import java.util.ArrayList;import java.util.List;public class EmployeeReadListener extends AnalysisEventListener<Employee> {    //员工集合    private static List<Employee> employeeList = new ArrayList<>();    // 每读一样,会调用该invoke方法一次    @Override    public void invoke(Employee data, AnalysisContext context) {        employeeList.add(data);        System.out.println("解析到一条数据:" + data);    }    // 全部读完之后,会调用该方法    @Override    public void doAfterAllAnalysed(AnalysisContext context) {        System.out.println("全部解析完成");    }        public static List<Employee> getStudentList() {        return employeeList;    }}

EasyExcel导入文件

Test测试类实现文件导入并存入数据库

@Testpublic void test1(){    ExcelReaderBuilder workBook = EasyExcel.read        ("C:\\Users\\王会称\\Desktop\\员工.xlsx", Employee.class, new EmployeeReadListener());    // 封装工作表    ExcelReaderSheetBuilder sheet1 = workBook.sheet();    // 读取    sheet1.doRead();    //写入数据库    List<Employee> studentList = EmployeeReadListener.getStudentList();    for (Employee employee : studentList) {        employee.setNoid(PbSecretUtils.uuid());        employeeMapper.insert(employee);    }}

通过页面点击导入文件并存入数据库

EmployeeController类:

@PostMapping("/import_employee_excel")public String importEmployeeExcel(MultipartFile emp_excel) {    employeeService.importExcel(emp_excel);    return "redirect:/employee/list";}

EmployeeService类:

public Integer importExcel(MultipartFile emp_excel) {    try {        String fileName = FileUploadUtil.upload(emp_excel, "");        ExcelReaderBuilder workBook = EasyExcel.read            (GlobalSet.upload_url+fileName, Employee.class, new EmployeeReadListener());        // 封装工作表        ExcelReaderSheetBuilder sheet1 = workBook.sheet();        // 读取        sheet1.doRead();        List<Employee> studentList = EmployeeReadListener.getStudentList();        for (Employee employee : studentList) {            employee.setNoid(PbSecretUtils.uuid());            if ("男".equals(employee.getStr_emp_sex())) {                employee.setEmp_sex(1);            } else {                employee.setEmp_sex(2);            }            employeeMapper.insert(employee);        }    } catch (IOException e) {        e.printStackTrace();    }    return 0;}

EasyExcel导出文件

Test测试类导出文件到指定文件

@Testpublic void test2() throws FileNotFoundException {    List<Employee> employeeList = initData();    ExcelWriterBuilder workBook = EasyExcel.write(GlobalSet.download_url, Employee.class);    // sheet方法参数: 工作表的顺序号(从0开始)或者工作表的名字    workBook.sheet("测试数据表").doWrite(employeeList);    System.out.println("写入完成!");}public List<Employee> initData() {    List<Employee> employeeList = new ArrayList<>();    for (int i = 1; i < 100; i++) {        Employee employee = new Employee();        employee.setEmp_name("小王说:"+i);        employee.setEmp_age(19);        if (i % 10 == 0) {            employee.setEmp_sex(1);        } else {            employee.setEmp_sex(2);        }        employee.setEmp_salary(19999.00+i);        employee.setEmp_address("北京市朝阳区"+i);        employee.setEmp_position("Java高级工程师");        employeeList.add(employee);    }    return employeeList;}

通过页面导出到指定文件后并下载文件

EmployeeController类

@GetMapping("/export_employee_excel")    public void exportEmployeeExcel(httpservletResponse response) {        try {            employeeService.exportEmployeeExcel(response);        } catch (IOException e) {            e.printStackTrace();        }    }

EmployeeService类:

public void exportEmployeeExcel(HttpServletResponse response) throws IOException {        List<Employee> kspwStudentSeatList = list();        try {            ExcelWriterBuilder workBook = EasyExcel.write(GlobalSet.download_url, Employee.class);            // sheet方法参数: 工作表的顺序号(从0开始)或者工作表的名字            workBook.sheet("员工信息").doWrite(kspwStudentSeatList);            downloadTempalate(response);            System.out.println("写入完成!");        } catch (Exception e) {            e.printStackTrace();        }    }        public static void downloadTempalate(HttpServletResponse response) throws IOException {        // 告诉浏览器用什么软件可以打开此文件        response.setHeader("content-Type", "application/vnd.ms-excel");        // 下载文件的默认名称        response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("员工信息.xlsx", "utf-8"));        //4. 创建输入、输出流        FileInputStream input = new FileInputStream(GlobalSet.download_url);        ServletOutputStream sos = response.getOutputStream();        //IO流获取文件的字节流,然后再响应给浏览器        byte[] arr = new byte[1024];        int res = 0;        while((res = input.read(arr)) > 0){            //将读取的内容输出到输出流中            sos.write(arr, 0, res);        }        input.close();        sos.close();    }

关于“Java+EasyExcel如何实现文件的导入导出”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: Java+EasyExcel如何实现文件的导入导出

本文链接: https://www.lsjlt.com/news/302370.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java+EasyExcel实现文件的导入导出
    目录引言效果图项目结构核心源码核心实体类核心监听器类EasyExcel导入文件EasyExcel导出文件引言 项目中需要Excel文件的导入与导出Excel并下载,例如,导入员工信息...
    99+
    2022-11-12
  • Java+EasyExcel如何实现文件的导入导出
    这篇文章将为大家详细讲解有关Java+EasyExcel如何实现文件的导入导出,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。引言项目中需要Excel文件的导入与导出Excel并下载,例如,导入员工信息,导...
    99+
    2023-06-22
  • EasyExcel实现Excel文件导入导出功能
    一、EasyExcel简介 Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的fu...
    99+
    2023-09-15
    excel java Powered by 金山文档
  • SpringBoot整合EasyExcel实现文件导入导出
    目录准备工作 1. 引入pom依赖2. 实现功能 Excel文件下载 3. 日志实体类4. 接口和具体实现 Excel文件导入 5. 文件读取配置 6. 读取测试7. 附上自定义属性...
    99+
    2022-11-12
  • java如何使用EasyExcel导入导出excel
    这篇文章主要介绍了java如何使用EasyExcel导入导出excel,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、准备工作1、导包<!-- poi&nb...
    99+
    2023-06-15
  • java利用easyexcel实现导入与导出功能
    目录前言1先添加依赖2批量插入数据3创建需要导出数据实体类4创建一个类ExcelListener5实现下载excel6控制器添加我们的导入操作代码7导出效果如图8导入直接调用前言 p...
    99+
    2022-11-13
  • 使用EasyExcel实现Excel的导入导出
    文章目录 前言一、EasyExcel是什么?二、使用步骤1.导入依赖2.编写文件上传配置3.配置表头对应实体类4.监听器编写5.控制层6.前端代码 总结 前言 在真实的开发者场景中,经常会使用excel作为数据的载体,进行...
    99+
    2023-08-17
    java
  • Spring Boot + EasyExcel实现数据导入导出
    目录背景SpringBoot项目集成依赖集成实体类实现业务逻辑实现MemberService实现简单导出实现自定义导入实现同步获取结果导入实现基于监听导入实现小结背景 老项目主要采用...
    99+
    2022-11-13
    Spring Boot 数据导入导出 EasyExcel数据导入导出
  • SpringBoot整合EasyExcel实现导入导出数据
    目录前言1.前端2.数据库3.后端3.1 contrller3.2 mapper3.3 bean3.4 listener3.5 config3.6 配置文件4.启动测试前言...
    99+
    2022-11-13
  • Java怎么实现文件批量导入导出
    本篇内容介绍了“Java怎么实现文件批量导入导出”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、介绍java实现文件的导入导出数据库,目前...
    99+
    2023-06-16
  • 基于EasyExcel实现百万级数据导入导出
    基于EasyExcel实现百万级数据导入导出 在项目开发中往往需要使用到数据的导入和导出,导入就是从Excel中导入到DB中,而导出就是从DB中查询数据然后使用POI写到Excel上。 大数据的导入和...
    99+
    2023-09-12
    java 面试 excel
  • React实现导入导出Excel文件
    目录表示层 业务层 核心插件xlsx excel 导入 excel 导出 excel 导出插件(js-export-excel) 实现效果结语 表示层 这里我是使用的是antd的U...
    99+
    2022-11-12
  • JavaScript实现excel文件导入导出
    目录一、需求场景描述1.此时前端上传解析excel文件可能更合适2.此时前端下载excel文件可能优雅一些二、实现思路分析1.导入excel文件实现思路分析2.导出excel文件实现...
    99+
    2022-11-13
  • 【JAVA】easyexcel 导出excel文件带多个图片
    最终效果  pom版本 com.alibaba easyexcel 3.0.5 实现代码 package com.alibaba.easyexcel.test.demo.write;import com.a...
    99+
    2023-09-05
    java excel easyexcel 导出图片列 图片导出excel
  • java实现excel的导出之使用easyExcel
    前言 在我们的项目需求中,经常会遇到导出的需求,其中excel的导出最为常见。生成Excel比较有名的框架有Apache poi,jxl等,但他们都存在一个严重的问题就是非常的耗内存,如果你的系统并发量不大的话可能还行,但是一旦并发上来后一...
    99+
    2023-08-18
    java excel 开发语言
  • Java使用easyExcel实现导入功能
    今天带来的是esayExcel的简单使用小结,一个高效的Excel的处理框架 临时接到领导要求需要做一个Excel导入功能,于是发挥我的特长——面向百度编程。...
    99+
    2022-11-13
    Java easyExcel 导入Excel
  • 利用java怎么实现文件的批量导入导出
    利用java怎么实现文件的批量导入导出?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、介绍利用java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天...
    99+
    2023-05-31
    java ava
  • Spring Boot 集成 EasyExcel 3.x 优雅实现Excel导入导出
    Spring Boot 集成 EasyExcel 3.x 本章节将介绍 Spring Boot 集成 EasyExcel(优雅实现Excel导入导出)。 🤖 Spring Boot 2.x 实践案例(代码仓库) 介绍...
    99+
    2023-08-22
    spring boot excel java
  • 基于EasyExcel实现百万级数据导入导出详解
    目录1.传统POI的的版本优缺点比较2.使用方式哪种看情况3.百万数据导入导出3.1 模拟500w数据导出3.2模拟500w数据导入4.总结在项目开发中往往需要使用到数据的导入和导出...
    99+
    2023-01-28
    EasyExcel实现数据导入导出 EasyExcel数据导入导出 EasyExcel数据导入 EasyExcel数据导出
  • mysql如何导入导出sql文件
    mysql如何导入导出sql文件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 window下...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作