easyexcel填充excel

导读:Excel文件填充是许多企业和个人日常工作中必不可少的一项任务。对于一次性需要生成大量Excel文件的场景,手动填充显然是非常浪费时间且容易出错的。这时,使用Java EasyExcel这个工具可以帮助我们快速、准确地填充Excel文件,提高工作效率与准确度。本篇文章将会介绍Java EasyExcel的使用方法、函数的详细说明以及具体实现的步骤等内容,以帮助大家更好地运用Excel文件填充技能。

1. EasyExcel简介

EasyExcel 是一个基于POI封装的 Java 读写Excel的开源项目,性能较快,支持Java对象到Excel文件的写操作,提供多种读取 Excel 的方式,使用简单便捷,具有快速读写、低内存占用的特点。

1.1 EasyExcel 的主要特点

1. 易于使用:提供了大量的API,能够高效地读取和输出Excel文件。

easyexcel填充excel

2. 快速读写:采用内存映射技术,避免OOM问题,并且使用低级别的POI API,具有高性能读写Excel的特点。

3. POI封装:采用POI作为Excel操作底层,封装POI对Excel文件的底层操作,使得使用者无需了解过多POI的API。

4. 对象映射:可直接将Java对象输出到Excel文件中,简单易用,提高代码效率。

5. 数据监听:可监听Excel文件的数据,并通过回调函数进行处理,适合大数据量或者复杂数据结构的读取。

6. 支持多种文件格式:除了 Excel 格式,还能够支持 CSV、XML、ODS 等格式的读写操作。

1.2 导入EasyExcel依赖包

首先,我们需要在项目中导入 EasyExcel 的依赖包,在 Maven 项目中导入以下代码:

```

com.alibaba

easyexcel

2.2.7

```

2. Java EasyExcel API

2.1 EasyExcel 核心API

EasyExcel的核心API是EasyExcelFactory类,使用它可以很方便地实现Excel文件的读写,主要提供以下几个方法:

read():读取 Excel 文件中的数据。

write():向 Excel 文件中写入数据。

readAll():读取 Excel 文件所有 Sheet 中的数据。

writeAll():向 Excel 文件中所有 Sheet 写入数据。

接下来,我们将会对这些方法进行具体的讲解。

2.2 Excel 读取操作

EasyExcel 提供了大量的注解,可以方便地配置 Excel 中的数据与Java对象的映射关系。下面我们详细介绍 Excel 读取操作的API:

2.2.1 Excel读取单个Sheet(默认读第一个Sheet)

如下是读取单个 Sheet 的示例代码:

```

@ExcelSheet

public class DemoData {

@ExcelProperty("字符串标题")

private String string;

@ExcelProperty("日期标题")

private Date date;

@ExcelProperty("数字标题")

private Double doubleData;

}

public class DemoDataListener extends AnalysisEventListener {

public void invoke(DemoData data, AnalysisContext context) { }

public void doAfterAllAnalysed(AnalysisContext context) { }

}

EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet().doRead();

```

其中,DemoData 类用来存储读取后的 Excel 数据,DemoDataListener 类用来处理读取过程中对数据的逻辑操作。示例代码中,使用 @ExcelSheet 注解标记 DemoData 类,指明该类对应 Excel 中的一个 Sheet。在构造读取器时,使用 EasyExcel.read() 方法传入 fileNameDemoData.classDemoDataListener,完成 Sheet 内容的读取操作。其中,sheet() 方法默认选用第 1 个 Sheet,如需指定 Sheet 可使用 sheet(sheetNo)

2.2.2 Excel读取多个Sheet

如下是读取多个 Sheet 的示例代码:

```

EasyExcel.read(fileName, DemoData.class, new DemoDataListener())

.sheet(0)

.sheet(1)

.doRead();

```

上述代码中,sheet() 方法用于指定需要读取的 Sheet,参数 sheetNo 表示 Sheet 的编号,从 0 开始。多个 Sheet 可使用多个 sheet() 方法进行指定,然后通过 doRead() 方法进行读取操作。

2.2.3 使用注解定义Excel文件数据类型

EasyExcel 支持使用注解直接将Excel文件中的数据读入到Java对象中,使用起来非常简洁易懂。下面是一个示例代码:

```

@Data

public class UploadData {

@ExcelProperty("姓名")

private String name;

@ExcelProperty("年龄")

private Integer age;

@ExcelProperty("邮箱")

private String email;

@ExcelIgnore

private String ignore;

}

@ColumnWidth(20)

@HeadStyle(fillPatternType = FillPatternType.SOLID_FOREGROUND, fillForegroundColor = 11)

@ContentStyle(fillPatternType = FillPatternType.SOLID_FOREGROUND, fillForegroundColor = 22, wrapped = true)

public class UploadDataListener extends AnalysisEventListener {

private List list = new ArrayList<>();

public void invoke(UploadData data, AnalysisContext context) {

list.add(data);

}

public void doAfterAllAnalysed(AnalysisContext context) {

// 业务逻辑处理

}

}

EasyExcel.read(file.getInputStream(),UploadData.class,new UploadDataListener()).sheet().doRead();

```

上述代码中,@ExcelProperty 注解用于声明Java类的属性与Excel中每列的关系。

2.3 Excel 写入操作

Excel 写入操作采用了类似于监听器(Listener)的设计模式,结合 ExcelWriteContext 对象控制 Excel 写入的各个环节,具有较高的灵活度,写出的 Excel 文件格式、样式与数据处理逻辑也相对容易掌控。

2.3.1 Excel 写入单个Sheet

EasyExcel提供了write()writeList() 以及 writeMap() 函数用于完成 Excel 中内容的写入。以下是一个写入单个 Sheet 的示例代码:

```

@Data

public class DemoData {

@ExcelProperty("字符串标题")

private String string;

@ExcelProperty("日期标题")

private Date date;

@ExcelProperty("数字标题")

private Double doubleData;

}

public static void main(String[] args) throws IOException {

String fileName = "test.xlsx";

EasyExcel.write(fileName, DemoData.class).sheet("模板").doWrite(data());

}

private static List data() {

List list = new LinkedList<>();

for (int i = 0; i < 5; i++) {

DemoData item = new DemoData();

item.setString("字符串" + i);

item.setDate(new Date());

item.setDoubleData(Double.valueOf(i));

list.add(item);

}

return list;

}

```

其中,通过 EasyExcel.write() 方法构造一个写入器 ExcelWriter。接下来,通过 ExcelWriter.sheet() 方法指定需要写入的 Sheet 名称。通过 ExcelWriter.doWrite() 方法实现 Excel 数据(List 集合)的写入操作。

2.3.2 Excel 写入多个Sheet

EasyExcel 同时也能够支持将多个数据写入不同的 Sheet 中。示例代码如下:

```

@Data

public class DemoData {

@ExcelProperty("字符串标题")

private String string;

@ExcelProperty("日期标题")

private Date date;

@ExcelProperty("数字标题")

private Double doubleData;

}

public static void main(String[] args) throws IOException {

String fileName = "test.xlsx";

// 写法1

ExcelWriter excelWriter = EasyExcel.write(fileName, DemoData.class).build();

WriteSheet sheet1 = EasyExcel.writerSheet(0,"模板1").build();

List data1 = data();

excelWriter.write(data1, sheet1);

WriteSheet sheet2 = EasyExcel.writerSheet(1,"模板2").build();

List data2 = data();

excelWriter.write(data2, sheet2);

excelWriter.finish();

// 写法2

EasyExcel.write(fileName, DemoData.class).registerWriteHandler(new FreezeAndFilterTable()).sheet("模板1").doWrite(data());

EasyExcel.write(fileName, DemoData.class).registerWriteHandler(new FreezeAndFilterTable()).sheet("模板2").doWrite(data());

}

private static List data() {

List list = new LinkedList<>();

for (int i = 0; i < 5; i++) {

DemoData item = new DemoData();

item.setString("字符串" + i);

item.setDate(new Date());

item.setDoubleData(Double.valueOf(i));

list.add(item);

}

return list;

}

```

上述代码中,使用 ExcelWriter 建立写入器,然后通过sheet重载方法指定需要写入的Sheet。通过 ExcelWriter.doWrite() 方法实现 Excel 数据的写入操作。

2.3.3 Excel 导出时的样式处理

除了数据之外,EasyExcel 还能对 Excel 文件进行样式处理。如下代码示例展示了如何为 Excel 写入过程设置不同的样式:

```

public static void main(String[] args) throws IOException {

String fileName = "test.xlsx";

// 定义样式配置项

List styles = new ArrayList<>();

styles.add(new WriteCellStyle().setHeadCellStyle(new WriteCellStyle().setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()).setFillPatternType(FillPatternType.SOLID_FOREGROUND))

.setContentCellStyle(new WriteCellStyle().setDataFormat((short) BuiltinFormats.getBuiltinFormat("0.00"))));

styles.add(new WriteCellData().setRowIndex(1).setCellStyle(new WriteCellStyle().setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()).setFillPatternType(FillPatternType.SOLID_FOREGROUND)));

EasyExcel.write(fileName, DemoData.class).registerWriteHandler(new FreezeAndFilterTable()).sheet("模板").doWrite(data()).setWriteCellStyle(styles);

}

```

通过 EasyExcel.setWriteCellStyle() 方法设置单元格样式,其中 WriteCellStyle、WriteCellData 是样式配置项,分别代表了样式与单元格位置。上述代码中,第一个样式设置了表头填充和数据格式(保留两位小数),第二个样式设置了第 2 行的填充样式(这个数据只有一行,第 2 行就是表头行)。

3. Excel文件读写实现步骤

上文介绍了 EasyExcel 的核心API,下面来系统地介绍一下 Excel 文件的读写实现步骤:

检查 Excel 文件是否存在,如不存在则进行错误反馈。

构造读取器或写入器。

设置 Excel 样式处理事项、全局信息。

通过 Sheet 的方式进行读写操作,采用“一次读取,多次处理”的方法,增强代码的可读性与稳定性。

数据操作完成之后,关闭读取器或写入器。

4. 总结

本文简单介绍了 EasyExcel 的使用方法,包括 EasyExcel 的特点、核心API、Excel 文件读写实现步骤等内容。EasyExcel的API设计精巧,具有优秀的性能与可扩展性。在实际开发过程中,使用 EasyExcel能够提高开发效率,避免对底层原理的操作。同时,通过代码演示,读者也能够更加便捷地了解 EasyExcel的操作模式。通过反复练习、沉淀,相信 EasyExcel将能够为你的工作提供巨大的帮助。

上一篇:easyexcel多线程导出excel

下一篇:each word

相关内容

  • 高中信息技术会考Excel必考点有哪些
  • 在高中信息技术的学习中,Excel作为一款重要的电子表格软件,扮演着极其关键的角色。它不仅在日常生活中发挥着重要作用,还是信息技术会考中的一个必考点。本文将详细...
  • 2024-12-22 16:05:50

    1

  • 高中信息技术会考之Excel函数
  • 在现代信息技术课程中,Excel作为一款强大的电子表格软件,凭借其丰富的函数功能,成为了学生们学习和应用数据处理的重要工具。为了帮助高中生在信息技术会考中取得好...
  • 2024-12-22 16:00:36

    1

  • 饼图的简单制作「以EXCEL为例」
  • 饼图是一种常用的数据可视化工具,能够帮助我们直观地展示各部分在整体中所占的比例。在众多数据处理软件中,Excel因其强大的功能和易于使用的界面,成为了制作饼图的...
  • 2024-12-22 15:49:39

    1

  • 高中信息技术之会考Excel公式。
  • 在现代教育中,信息技术的学习已经成为高中生的重要课程之一,尤其是Excel公式的应用,更是提升学生数据处理能力的重要工具。本文将围绕《高中信息技术之会考Exce...
  • 2024-12-22 15:28:11

    1

  • 高亮重复项怎么用excel
  • 在日常工作中,我们常常需要处理大量的数据,而在这些数据中,重复项的存在往往会影响我们的分析和判断。为了帮助用户更高效地处理数据,Excel提供了高亮显示重复项的...
  • 2024-12-22 15:27:06

    1

  • 高中信息技术会考Excel操作题常考点汇总
  • 在现代教育中,信息技术的普及使得Excel等办公软件的使用变得越来越重要。高中信息技术会考中,Excel操作题作为核心内容之一,考察学生在实用技能上的熟练程度和...
  • 2024-12-22 15:13:09

    1