官网提供的demo不错.就直接用官网的demo来说明了.
第一:最简单的写--将一个list导出到一个sheet里.(完整的代码在文章最后贴出)

第二:写入,排除指定列.

第三,指定列写入.(使用指定列导出,则其他没有指定的列全都被排除)

第四,多次重复写,都在excel同个sheet的末尾写入.如文件已经存在,会覆盖原文件的数据.

第五,同一个对象,不同的list 写入到不同的sheet.

第六,不同的对象,写入到不同的sheet

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import org.junit.Ignore;
import org.junit.Test;
import java.util.*;
@Ignore
public class WriteTest {
/**
* 最简单的写
*/
@Test
public void simpleWrite() {
// 写法1
String fileName = TestFileUtil.getPath() + "simpleWrite" + System.currentTimeMillis() + ".xlsx";
System.out.println("输出文件的路径为:" + fileName);
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
// 如果这里想使用03 则 传入excelType参数即可
EasyExcel.write(fileName, DemoData.class).sheet("模板").doWrite(data());
// 写法2
fileName = TestFileUtil.getPath() + "simpleWrite" + System.currentTimeMillis() + ".xlsx";
// 这里 需要指定写用哪个class去写
ExcelWriter excelWriter = null;
try {
excelWriter = EasyExcel.write(fileName, DemoData.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();
excelWriter.write(data(), writeSheet);
} finally {
// 千万别忘记finish 会帮忙关闭流
if (excelWriter != null) {
excelWriter.finish();
}
}
}
/**
* 根据参数排除指定列
*/
@Test
public void excludeWrite() {
String fileName = TestFileUtil.getPath() + "excludeOrIncludeWrite" + System.currentTimeMillis() + ".xlsx";
// 根据用户传入字段 假设我们要忽略 date
Set<String> excludeColumnFiledNames = new HashSet<String>();
excludeColumnFiledNames.add("date");
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
EasyExcel.write(fileName, DemoData.class).excludeColumnFiledNames(excludeColumnFiledNames).sheet("模板").doWrite(data());
}
/**
* 写入指定列
*/
@Test
public void includerWrite() {
String fileName = TestFileUtil.getPath() + "includeOrIncludeWrite" + System.currentTimeMillis() + ".xlsx";
// 根据用户传入字段 假设我们只要导出 date
Set<String> includeColumnFiledNames = new HashSet<String>();
includeColumnFiledNames.add("date");
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
EasyExcel.write(fileName, DemoData.class).includeColumnFiledNames(includeColumnFiledNames).sheet("模板").doWrite(data());
}
/**
* 重复多次写入
*/
@Test
public void repeatedWrite1() {
// 方法1 如果写到同一个sheet
String fileName = TestFileUtil.getPath() + "repeatedWrite" + System.currentTimeMillis() + ".xlsx";
ExcelWriter excelWriter = null;
try {
// 这里 需要指定写用哪个class去写
excelWriter = EasyExcel.write(fileName, DemoData.class).build();
// 这里注意 如果同一个sheet只要创建一次
WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();
// 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来
for (int i = 0; i < 3; i++) {
// 分页去数据库查询数据 这里可以去数据库查询每一页的数据
List<DemoData> data = data();
excelWriter.write(data, writeSheet);
}
} finally {
// 千万别忘记finish 会帮忙关闭流
if (excelWriter != null) {
excelWriter.finish();
}
}
}
/*
*同一对象写到不同的sheet
*/
@Test
public void repeatedWrite2() {
// 方法2 如果写到不同的sheet 同一个对象
String fileName = TestFileUtil.getPath() + "repeatedWrite2" + System.currentTimeMillis() + ".xlsx";
ExcelWriter excelWriter = null;
try {
// 这里 指定文件
excelWriter = EasyExcel.write(fileName, DemoData.class).build();
// 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来。这里最终会写到5个sheet里面
for (int i = 0; i < 2; i++) {
// 每次都要创建writeSheet 这里注意必须指定sheetNo 而且sheetName必须不一样
WriteSheet writeSheet = EasyExcel.writerSheet(i, "模板" + i).build();
// 分页去数据库查询数据 这里可以去数据库查询每一页的数据
List<DemoData> data = data();
excelWriter.write(data, writeSheet);
}
} finally {
// 千万别忘记finish 会帮忙关闭流
if (excelWriter != null) {
excelWriter.finish();
}
}
}
/**
* 不同对象,写到不同的sheet
*/
@Test
public void repeatedWrite3() {
// 方法3 如果写到不同的sheet 不同的对象
String fileName = TestFileUtil.getPath() + "repeatedWrite3" + System.currentTimeMillis() + ".xlsx";
ExcelWriter excelWriter = null;
try {
// 这里 指定文件
excelWriter = EasyExcel.write(fileName).build();
//第一个Sheet 每次都要创建writeSheet 这里注意必须指定sheetNo 而且sheetName必须不一样。这里注意DemoData.class
WriteSheet writeSheet = EasyExcel.writerSheet(1, "模板" + 1).head(DemoData.class).build();
List<DemoData> data = data();
excelWriter.write(data, writeSheet);
//第二个Sheet 每次都要创建writeSheet 这里注意必须指定sheetNo 而且sheetName必须不一样。
WriteSheet writeSheet2 = EasyExcel.writerSheet(2, "模板" + 2).head(DemoData2.class).build();
List<DemoData2> data2 = data2();
excelWriter.write(data2, writeSheet2);
} finally {
// 千万别忘记finish 会帮忙关闭流
if (excelWriter != null) {
excelWriter.finish();
}
}
}
private List<DemoData> data() {
List<DemoData> list = new ArrayList<DemoData>();
for (int i = 0; i < 10; i++) {
DemoData data = new DemoData();
data.setString("字符串" + i);
data.setDate(new Date());
data.setDoubleData(0.56);
list.add(data);
}
return list;
}
private List<DemoData2> data2() {
List<DemoData2> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
DemoData2 data = new DemoData2();
data.setName("名字,张" + i);
data.setDate(new Date());
data.setAge(new Random().nextInt(100));
list.add(data);
}
return list;
}
class DemoData {
private String string;
private Date date;
private Double doubleData;
public String getString() {
return string;
}
public void setString(String string) {
this.string = string;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public Double getDoubleData() {
return doubleData;
}
public void setDoubleData(Double doubleData) {
this.doubleData = doubleData;
}
}
class DemoData2 {
private String name;
private Integer age;
private Date date;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
#欢迎关注-- ☆或许能帮你解决JAVA相关的问题☆.

本文通过官网的示例介绍了如何使用EasyExcel将数据写入Excel文件,包括简单写入、排除指定列、指定列写入、追加写入、多个对象列表写入不同sheet以及不同对象写入不同sheet等操作。
1940

被折叠的 条评论
为什么被折叠?



