首页 > 作文

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

更新时间:2023-04-04 04:18:43 阅读: 评论:0

目录
引言效果图项目结构核心源码核心实体类核心监听器类easyexcel导入文件easyexcel导出文件

引言

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

技术栈

excel工具:easyexcel

选用框架:spring、spring mvc、mybatis(ssm)

项目构建管理工具:maven

需求:

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

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

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

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

效果图

项目结构

核心源码

导入阿里巴巴easyexcel依赖

<dependency>    <groupid>com.alibaba</groupid>    <artifactid>easyexcel</artifactid>    <version>2.1.6</version></dependency>

这里采用easyexcel,为什么不采用poi呢?

因为easyexcel是对poi做的一个升级,poi相对于笨重,easyexcel去除了一些poi比较繁琐的东西,所以easye建国70周年手抄报xcel比较轻量级,所以本文采用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_x;    //冗余字段    @columnwidth(20)    @excelproperty("员工性别")    private string str_emp_x;    @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.analysiventlistener;import com.wanshi.spring.entity.employee;import java.util.arraylist;import java.util.list;public class employeereadlistener extends analysiventlistener<employee> {    //员工集合    private static list<employee> employeelist = new arraylist<>();    // 每读一样,会调用该invoke方法一次    @override    public void invoke(employee data, analysiscontext context) {        employeelist.add(data);        system.out.pri经历可数吗ntln("解析到一条数据:" + data);    }    // 全部读完之后,会调用该方法    @override    public void doafterallanalyd(analysiscontext context) {        system.out.println("全部解析完成");    }    /**     * 返回读取affect到的员工集合     * @return     */    public static list<employee> getstudentlist() {        return em安徽名人ployeelist;    }}

easyexcel导入文件

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

@testpublic void test1(){    excelreaderbuilder workbook = easyexcel.read        ("c:\\urs\\王会称\\desktop\\员工.xlsx", employee.class, new employeereadlistener());    // 封装工作表    excelreadersheetbuilder sheet1 = workbook.sheet();    // 读取    sheet1.doread();    //写入数据库    list<employee> studentlist = employeereadlistener.getstudentlist();    for (employee employee : studentlist) {        employee.tnoid(pbcretutils.uuid());        employeemapper.inrt(employee);    }}

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

employeecontroller类:

@postmapping("/import_employee_excel")public string importemployeeexcel(multipartfile emp_excel) {    employeervice.importexcel(emp_excel);    return "redirect:/employee/list";}

employeervice类:

/**     * 获取用户选择的文件并将文件存入指定位置再将数据存入数据库     * @param emp_excel     * @return     */public integer importexc懂你作文el(multipartfile emp_excel) {    try {        string filename = fileuploadutil.upload(emp_excel, "");        excelreaderbuilder workbook = easyexcel.read            (globalt.upload_url+filename, employee.class, new employeereadlistener());        // 封装工作表        excelreadersheetbuilder sheet1 = workbook.sheet();        // 读取        sheet1.doread();        list<employee> studentlist = employeereadlistener.getstudentlist();        for (employee employee : studentlist) {            employee.tnoid(pbcretutils.uuid());            if ("男".equals(employee.getstr_emp_x())) {                employee.temp_x(1);            } el {                employee.temp_x(2);            }            employeemapper.inrt(employee);        }    } catch (ioexception e) {        e.printstacktrace();    }    return 0;}

easyexcel导出文件

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

@testpublic void test2() throws filenotfoundexception {    list<employee> employeelist = initdata();    excelwriterbuilder workbook = easyexcel.write(globalt.download_url, employee.class);    // sheet方法参数: 工作表的顺序号(从0开始)或者工作表的名字    workbook.sheet("测试数据表").dowrite(employeelist);    system.out.println("写入完成!");}/**     * 生成测试数据     * @return     */public list<employee> initdata() {    list<employee> employeelist = new arraylist<>();    for (int i = 1; i < 100; i++) {        employee employee = new employee();        employee.temp_name("小王说:"+i);        employee.temp_age(19);        if (i % 10 == 0) {            employee.temp_x(1);        } el {            employee.temp_x(2);        }        employee.temp_salary(19999.00+i);        employee.temp_address("北京市朝阳区"+i);        employee.temp_position("java高级工程师");        employeelist.add(employee);    }    return employeelist;}

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

employeecontroller类

@getmapping("/export_employee_excel")    public void exportemployeeexcel(httprvletrespon respon) {        try {            employeervice.exportemployeeexcel(respon);        } catch (ioexception e) {            e.printstacktrace();        }    }

employeervice类:

public void exportemployeeexcel(httprvletrespon respon) throws ioexception {        list<employee> kspwstudentatlist = list();        try {            excelwriterbuilder workbook = easyexcel.write(globalt.download_url, employee.class);            // sheet方法参数: 工作表的顺序号(从0开始)或者工作表的名字            workbook.sheet("员工信息").dowrite(kspwstudentatlist);            downloadtempalate(respon);            system.out.println("写入完成!");        } catch (exception e) {            e.printstacktrace();        }    }    /**     * 下载文件     * @param respon     * @throws ioexception     */    public static void downloadtempalate(httprvletrespon respon) throws ioexception {        // 告诉浏览器用什么软件可以打开此文件        respon.theader("content-type", "application/vnd.ms-excel");        // 下载文件的默认名称        respon.theader("content-disposition", "attachment;filename=" + urlencoder.encode("员工信息.xlsx", "utf-8"));        //4. 创建输入、输出流        fileinputstream input = new fileinputstream(globalt.download_url);        rvletoutputstream sos = respon.getoutputstream();        //io流获取文件的字节流,然后再响应给浏览器        byte[] arr = new byte[1024];        int res = 0;        while((res = input.read(arr)) > 0){            //将读取的内容输出到输出流中            sos.write(arr, 0, res);        }        input.clo();        sos.clo();    } 

以上就是java+easyexcel实现文件的导入导出的详细内容,更多关于java easyexcel文件的导入导出的资料请关注www.887551.com其它相关文章!

本文发布于:2023-04-04 04:18:41,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/01ebc5b075c362b8aad3a3670e0c148a.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Java+EasyExcel实现文件的导入导出.doc

本文 PDF 下载地址:Java+EasyExcel实现文件的导入导出.pdf

标签:文件   员工   核心   工作
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图