整体介绍
本文采用easyexcel来做java读取excel的样例,他更快,更低内存消耗,是java读写excel的最好工具。
EasyExcel是一款基于Java开发的高效、简洁的Excel处理工具,专为解决大文件内存溢出问题而设计。它能够快速完成Excel的读写操作,同时显著降低内存消耗。与传统的Apache POI等框架相比,EasyExcel通过采用SAX模式解析并重写了对07版Excel的处理方式,使得即使面对非常大的Excel文件也能保持较低的内存占用(例如,3M大小的文件只需几M内存)。此外,它支持多种高级功能如自定义样式、数据转换器以及公式自动计算等,极大地简化了开发者的工作流程。
使用easyexcel 读取 excel的案例

使用easyexcel 生成一个Excel文件的过程
根据提供的我了解的信息,我们可以了解到EasyExcel是一个基于Java的、快速且简洁的工具,专门用于处理Excel文件,特别是解决大文件内存溢出的问题。在下面的部分中,我们将详细描述如何通过EasyEasyExcel来创建一个新的Excel文件,包括必要的配置信息以及具体的代码示例。
准备工作
首先确保你的项目已经引入了EasyExcel的相关依赖。如果你使用Maven作为构建工具,可以在pom.xml
文件中添加如下依赖:
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.10</version> <!-- 请确认你使用的版本 --></dependency>
接下来定义一个简单的数据模型类,用来表示Excel中的每一行数据。这里以学生信息为例:
import com.alibaba.excel.annotation.ExcelProperty;import lombok.Data;@Datapublic class Student { @ExcelProperty("学号") private String id; @ExcelProperty("姓名") private String name; @ExcelProperty("年龄") private Integer age;}
创建并填充Excel文件
现在我们准备好了一个基本的数据模型类,下一步就是编写代码来创建和填写Excel文件。以下是完成这个任务的一个例子:
import com.alibaba.excel.EasyExcel;import java.util.ArrayList;import java.util.List;public class ExcelGenerator { public static void main(String[] args) { // 目标文件路径 String fileName = "students.xlsx"; // 准备数据 List<Student> students = new ArrayList<>(); for (int i = 1; i <= 100; i++) { Student student = new Student(); student.setId("S" + i); student.setName("Student" + i); student.setAge(18 + i % 5); // 假设学生的年龄为18至22岁之间 students.add(student); } // 写入Excel EasyExcel.write(fileName, Student.class).sheet("学生列表").doWrite(students); System.out.println("Excel文件已成功生成!"); }}
这段代码首先指定了要写入的文件名(students.xlsx
),然后准备了一组学生数据,并将这些数据写入到指定名称的工作表中。
配置选项
虽然上述示例已经足够演示基本功能,但EasyExcel还提供了丰富的配置选项以满足更复杂的需求。例如,你可以设置是否自动修剪字符串、选择性地包含或排除某些列等。以下是一些常用的配置选项及其用途:
autoTrim
: 自动去除读取/写入过程中头和单元格值前后空白字符。
excludeColumnFieldNames
: 指定需要从输出中排除的字段名。
includeColumnFieldNames
: 只导出特定字段。
needHead
: 控制是否在输出文件中加入表头。
这些参数可以通过调用相应的方法链式设置。例如,如果希望只导出“学号”和“姓名”,同时开启自动修整功能,可以这样修改上面的例子:
EasyExcel.write(fileName, Student.class) .registerConverter(new CustomConverter()) // 如果有自定义转换器 .autoTrim(true) .includeColumnFieldNames(Arrays.asList("id", "name")) .sheet("学生列表") .doWrite(students);
结论
以上便是利用EasyExcel生成Excel文件的一个完整过程。该框架不仅简化了开发者的编码工作量,同时也极大地优化了性能与资源占用情况。对于更大规模的数据处理需求,还可以进一步探索如并发控制、缓存策略等高级特性。
使用easyexcel 生成excel的案例
使用easyexcel 生成Excel的案例
分析
根据提供的知识,使用EasyExcel来生成一个Excel文件主要涉及以下几个步骤:
定义数据模型:创建一个Java类,该类中的字段对应于Excel表格中的列。通过
@ExcelProperty
注解指定每个字段在Excel中的标题。
准备数据:创建一个列表,填充要写入的数据。
写入数据:利用EasyExcel的API将准备好的数据写入到Excel文件中。
以下将详细展示如何执行这些步骤以生成一个简单的Excel文件。
具体步骤
定义数据模型
首先,我们需要创建一个代表Excel行内容的Java类。这里我们将它命名为DemoData
。此示例中,我们的Excel将包含三列:字符串、日期和数字。
@Getter@Setter@EqualsAndHashCodepublic class DemoData { @ExcelProperty("字符串标题") private String string; @ExcelProperty("日期标题") private Date date; @ExcelProperty("数字标题") private Double doubleData; /** * 忽略这个字段 */ @ExcelIgnore private String ignore;}
准备数据
接下来,需要准备实际要写入Excel的数据。这通常意味着创建一个List<DemoData>
实例并填充一些样本数据。
private List<DemoData> data() { List<DemoData> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { DemoData data = new DemoData(); data.setString("字符串" + i); data.setDate(new Date()); data.setDoubleData(0.56 * (i + 1)); list.add(data); } return list;}
写入数据到Excel
最后一步是调用EasyExcel的write
方法来创建Excel文件,并使用之前准备的数据填充它。
@Testpublic void simpleWrite() { // 文件名 String fileName = "simpleWrite" + System.currentTimeMillis() + ".xlsx"; // EasyExcel.write(fileName, 数据类型).sheet("工作表名称").doWrite(数据源); EasyExcel.write(fileName, DemoData.class) .sheet("模板") .doWrite(() -> data());}
这里有几种方式可以调用doWrite
方法,上面的例子采用的是lambda表达式的形式来提供数据。另外还支持直接传入数据列表或者更复杂的自定义写操作配置。
解释
在第一步中,我们定义了
DemoData
类,它包含了三个属性,分别映射到Excel的三个列。通过@ExcelProperty
注解指定了每一列的标题,而@ExcelIgnore
则用于排除不需要导出到Excel的字段。
第二步展示了如何生成一份测试数据集。在这个例子中,我们简单地循环创建了10个
DemoData
对象,每次迭代时改变字符串值并保持日期为当前时间。
最后,在第三步中,我们使用EasyExcel库的功能创建了一个新的Excel文件,并将前面构造的数据集写入到该文件内。这里的
fileName
变量存储了目标文件的路径和名称,DemoData.class
指定了数据模型,.sheet("模板")
设定了工作表的名字,最后doWrite
方法接收一个数据源(这里是通过lambda函数动态生成)完成整个写入过程。