EasyExcel实现execl导入导出

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

引言

在实际开发中,处理 Excel 文件是一个常见的需求。EasyExcel 是一个基于 Java 的开源库,提供了简单易用的 API,可以方便地读取和写入 Excel 文件。本文将介绍如何使用 EasyExcel 实现 Excel 导入功能,以及一些相关的技巧和注意事项。

环境搭建

在开始之前,我们需要准备好 EasyExcel 的环境。首先,我们需要在项目中引入 EasyExcel 的相关依赖。在本文中,我们使用 Maven 作为依赖管理工具。在 pom.xml 文件中添加以下依赖:

   <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>easyexcel</artifactId>
                <version>2.1.1</version>
            </dependency>

准备 Excel 文件

在开始编写代码之前,我们需要准备一个包含数据的 Excel 文件,作为导入的示例。确保 Excel 文件的结构和数据与实体类的字段对应。

EasyExcel实现execl导入导出

创建实体类

在使用 EasyExcel 进行导入时,我们需要创建一个与 Excel 数据结构相匹配的实体类。实体类的字段应与 Excel 文件的列对应。使用 @ExcelProperty 注解来标识字段与 Excel 列的映射关系,以及一些其他注解来设置字段的属性。举个例子如下:

 

@AllArgsConstructor
@NoArgsConstructor
@Data
public class OperationLog {
    //    @JsonFormat(shape = JsonFormat.Shape.STRING)
    @ExcelProperty(value = "id", converter = StringConverter.class,index = 0)
    private String id; //日志id
    @ExcelProperty(value = "操作人",index = 1)
    private String userCode; //操作人
    @ExcelProperty(value = "操作ip",index = 2)
    private String ip; //操作ip
    @ExcelProperty(value = "操作类型",index = 3)
    private String type; //操作类型
    @ExcelProperty(value = "操作名称",index = 4)
    private String description; //操作名称
    @ExcelProperty(value = "操作模块",index = 5)
    private String model; //操作模块
    @ExcelProperty(value = "操作时间",index = 6)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ExcelIgnore
    private String operationTime; //操作时间
    @ExcelProperty(value = "操作结果",index = 7)
    private String result; //操作结果
}

自定义转换器

有时,我们需要对 Excel 中的数据进行特殊处理或转换,以适应实体类的字段类型。EasyExcel 允许我们自定义转换器来实现这个功能。下面是一个示例

import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;

/**
 * @program: family-doctor
 * @author: 阿水
 * @create: 2023-06-16 20:44
 **/

public class StringConverter implements Converter<String> {

    @Override
    public Class<String> supportJavaTypeKey() {
        return String.class;
    }

    @Override
    public CellDataTypeEnum supportExcelTypeKey() {
        return CellDataTypeEnum.STRING;
    }

    @Override
    public String convertToJavaData(CellData cellData, ExcelContentProperty contentProperty,
                                    GlobalConfiguration globalConfiguration) throws Exception {
        return cellData.getStringValue();
    }

    @Override
    public CellData<?> convertToExcelData(String value, ExcelContentProperty contentProperty,
                                          GlobalConfiguration globalConfiguration) throws Exception {
        return new CellData<>(value);
    }
}

编写导入逻辑

现在我们开始编写导入 Excel 的逻辑。以下是一个示例:

我通过的MongoDB的_id集合查询出来数据写入Excel,readExistingExcelData方法是先读取之前再写入,好像没法直接追加 我目前如此操作 也可以完美实现后续添加~

/**
     * 根据ids批量导出
     * @param ids
     * @return
     */
    @Override
    public HttpResult<?> batchExportLogByIds(List<String> ids) {
        Query query = new Query(Criteria.where("_id").in(ids));
        List<OperationLog> resultList = mongoTemplate.find(query, OperationLog.class);

        // 读取已有的Excel文件内容
        List<OperationLog> existingList = readExistingExcelData();

        // 合并新数据和已有数据
        List<OperationLog> mergedList = new ArrayList<>(existingList);
        mergedList.addAll(resultList);

        // 设置写入文件夹地址和Excel文件名称
        String filename = "F:\\lps\\write.xlsx";
        ExcelWriter excelWriter = null;
        try {
            excelWriter = EasyExcel.write(filename, OperationLog.class)
                    .registerConverter(new StringConverter())
                    .build();

            WriteSheet writeSheet = EasyExcel.writerSheet("日志").build();
            excelWriter.write(mergedList, writeSheet);
        } catch (Exception e) {
            e.printStackTrace();
            return new HttpResult<>().fail();
        } finally {
            if (excelWriter != null) {
                excelWriter.finish();
            }
        }

        return new HttpResult<>().ok();

    }
    // 读取已有的Excel文件内容
    private List<OperationLog> readExistingExcelData() {
        String filename = "F:\\lps\\write.xlsx";
        List<OperationLog> existingList = new ArrayList<>();
        try {
            ExcelReader excelReader = EasyExcel.read(filename, OperationLog.class, new OperationLogDataListener(existingList)).build();
            ReadSheet readSheet = EasyExcel.readSheet("日志").build();
            excelReader.read(readSheet);
            excelReader.finish();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return existingList;
    }
    // 自定义监听器
    private class OperationLogDataListener extends AnalysisEventListener<OperationLog> {
        private List<OperationLog> dataList;

        public OperationLogDataListener(List<OperationLog> dataList) {
            this.dataList = dataList;
        }

        @Override
        public void invoke(OperationLog operationLog, AnalysisContext analysisContext) {
            dataList.add(operationLog);
        }

        @Override
        public void doAfterAllAnalysed(AnalysisContext analysisContext) {
            // 数据处理完毕后的操作(如果需要)
        }
    }

EasyExcel实现execl导入导出

 

总结和展望

通过使用 EasyExcel,我们可以轻松实现 Excel 导入功能,并对导入的数据进行处理和转换。本文介绍了如何准备环境、创建实体类、自定义转换器以及编写导入逻辑的步骤和示例代码。希望本文对你理解和使用 EasyExcel 有所帮助。

在实际开发中,还可以进一步扩展功能,例如处理大数据量的导入、导入进度条的展示等。通过深入研究 EasyExcel 的文档和示例代码,你可以发现更多有趣和有用的功能。文章来源地址https://www.toymoban.com/news/detail-492426.html

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

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

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

相关文章

  • Java 使用 EasyExcel 实现导入导出(新手篇教程)

    官网镇楼↓,觉得我写的不好的同学可以去官网看哦 EasyExcel 示例: 如上一个简易 Excel 表格,表头占了两行,且第三列开始才为有效数据,那么我们应该如何导入? 建造实体类 首先无论是导入还是导出,都需要先建对应的实体类  如图所示,因为我的示例 Excel 一共需要读

    2024年04月17日
    浏览(41)
  • springboot中使用EasyExcel实现Excel 导入导出

    EasyExcel 是一款基于 Java 的简单易用的 Excel 文件操作工具。它提供了丰富的 API,可以方便地读取、写入和操作 Excel 文件,支持常见的 Excel 操作,如读取/写入单元格数据、合并单元格、设置样式、处理大数据量等。EasyExcel能大大减少占用内存的主要原因是在解析Excel时没有将

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

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

    2024年02月14日
    浏览(41)
  • SpringBoot整合easyExcel实现CSV格式文件的导入导出

    目录 一:pom依赖 二:检查CSV内容格式的工具类 三:Web端进行测试 四:拓展使用 使用hutool工具类来进行导出功能

    2024年02月02日
    浏览(48)
  • 使用POI和EasyExcel来实现excel文件的导入导出

    废话不多说咱们直接上干货!!!! 一.读取Excel表格 【1】使用POI读取excel表格中的数据 POI还可以操作我们这个word文档等等,他不仅仅只能弄Excel,而JXI只能操作excel 1.POI的结构,我们可以更具文件的类去选择 相关的对象我当前是使用的XLSX来操作的 HSSF - 提供读写Microsoft

    2024年02月05日
    浏览(59)
  • SpringBoot 集成 EasyExcel 3.x 优雅实现 Excel 导入导出

    EasyExcel 是一个基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具。它能让你在不用考虑性能、内存的等因素的情况下,快速完成 Excel 的读、写等功能。 EasyExcel文档地址: https://easyexcel.opensource.alibaba.com/ 引入依赖 简单导出 以导出用户信息为例,接下来手把手教

    2024年02月15日
    浏览(47)
  • Spring Boot 集成 EasyExcel 3.x 优雅实现Excel导入导出

    本章节将介绍 Spring Boot 集成 EasyExcel(优雅实现Excel导入导出)。 🤖 Spring Boot 2.x 实践案例(代码仓库) EasyExcel 是一个基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具。它能让你在不用考虑性能、内存的等因素的情况下,快速完成 Excel 的读、写等功能。 Ea

    2024年02月03日
    浏览(78)
  • EasyExcel导入和导出数据

    1.cmtroller 调用service方法,完成导出 2.service 调用工具类的方法完成导出 传入response,标题控制类(标题名称,合并的列数),员工列表,文件名称,excel的标题名称,要导出的数据类 3.工具类中的方法 4.控制标题类 这个类控制数据之前的显示内容 效果 2022-10-28 乱码解决 因为文件

    2023年04月09日
    浏览(38)
  • EasyExcel 三分钟搞定导入导出

    前言:本文章教你从零开始,三分钟搞定excel单sheet导出、导入、多sheet导出、导入、excel模板导入单个sheet、多个sheet,废话不多说,直接上代码 1.引入依赖 2.工具类-ExcelHandler 3.工具类-ExcelTemplateEnum 4.工具类-UploadDataListener 5.实体类-ExcelVO 6.业务层-ExcelService 7.实现层-ExcelService

    2024年02月15日
    浏览(30)
  • 数据导入导出(POI以及easyExcel)

            将一些数据库信息导出为Excel表格         将Excel表格数据导入数据库         大量数据的导入导出操作 常⽤的解决⽅案为: Apache POI 与阿⾥巴巴 easyExcel Apache POI 是基于 Office Open XML 标准( OOXML )和 Microsoft 的 OLE 2 复合⽂档 格式( OLE2 )处理各种⽂件格式的

    2024年02月13日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包