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

相关内容

  • wps2019把word和excel分开的操作教程
  • 简介在使用WPS2019办公软件时,许多用户会发现Word和Excel文档默认是以标签页的形式呈现在同一个窗口中的。这种方式虽然便于切换,但对于需要多任务处理的...
  • 2024-09-12 11:18:37

    1

  • wps excel里怎样按照类别拆分数据
  • 使用WPS Excel按照类别拆分数据的方法在数据分析过程中,将数据按照不同类别进行拆分是一项非常常见且重要的任务。WPS Excel提供了多种工具和方法,帮助...
  • 2024-09-10 15:06:50

    1

  • word表格转Excel表格排版不变的操作方法
  • 将Word表格转换为Excel表格的必要性在日常工作中,许多人需要在Word和Excel之间进行数据转换。Word表格虽然方便编辑和排版,但在处理大量数据或进行...
  • 2024-09-10 11:08:07

    1

  • word表格转成excel的操作步骤
  • 对Word表格进行初步准备要将Word表格转换成Excel文件,首先需要对Word文档进行初步准备。在这一阶段,我们需要确保表格内容整齐,避免随意的排版造成转换...
  • 2024-09-10 10:17:59

    1

  • windows10 EXCEL提示运行时错误1004如何解决
  • 1. 什么是运行时错误1004运行时错误1004是指在使用Excel时出现的一种常见错误。它通常是由于代码中的某个操作无法正常执行而导致的。具体来说,这个错误通...
  • 2024-09-09 18:15:45

    1