Fill
This section explains how to use FastExcel to fill data into files.
Simple Fill
Overview
Fill data into Excel based on a template file using objects or Map.
POJO Class
@Getter
@Setter
@EqualsAndHashCode
public class FillData {
private String name;
private double number;
private Date date;
}
Code Example
@Test
public void simpleFill() {
String templateFileName = "path/to/simple.xlsx";
// Approach 1: Fill based on object
FillData fillData = new FillData();
fillData.setName("张三");
fillData.setNumber(5.2);
FastExcel.write("simpleFill.xlsx")
.withTemplate(templateFileName)
.sheet()
.doFill(fillData);
// Approach 2: Fill based on Map
Map<String, Object> map = new HashMap<>();
map.put("name", "张三");
map.put("number", 5.2);
FastExcel.write("simpleFillMap.xlsx")
.withTemplate(templateFileName)
.sheet()
.doFill(map);
}
Template
Result
Fill List
Overview
Fill multiple data items into a template list, supporting in-memory batch operations and file cache batch filling.
Code Example
@Test
public void listFill() {
String templateFileName = "path/to/list.xlsx";
// Approach 1: Fill all data at once
FastExcel.write("listFill.xlsx")
.withTemplate(templateFileName)
.sheet()
.doFill(data());
// Approach 2: Batch filling
try (ExcelWriter writer = FastExcel.write("listFillBatch.xlsx").withTemplate(templateFileName).build()) {
WriteSheet writeSheet = FastExcel.writerSheet().build();
writer.fill(data(), writeSheet);
writer.fill(data(), writeSheet);
}
}
Template
Result

Complex Fill
Overview
Fill various data types in a template, including lists and regular variables.
Code Example
@Test
public void complexFill() {
String templateFileName = "path/to/complex.xlsx";
try (ExcelWriter writer = FastExcel.write("complexFill.xlsx").withTemplate(templateFileName).build()) {
WriteSheet writeSheet = FastExcel.writerSheet().build();
// Fill list data, with forceNewRow enabled
FillConfig config = FillConfig.builder().forceNewRow(true).build();
writer.fill(data(), config, writeSheet);
// Fill regular variables
Map<String, Object> map = new HashMap<>();
map.put("date", "2024年11月20日");
map.put("total", 1000);
writer.fill(map, writeSheet);
}
}
Template
Result

Complex Fill with Large Data
Overview
Optimize performance for filling large data, ensuring the template list is at the last row, and subsequent data is filled using WriteTable.
Code Example
@Test
public void complexFillWithTable() {
String templateFileName = "path/to/complexFillWithTable.xlsx";
try (ExcelWriter writer = FastExcel.write("complexFillWithTable.xlsx").withTemplate(templateFileName).build()) {
WriteSheet writeSheet = FastExcel.writerSheet().build();
// Fill list data
writer.fill(data(), writeSheet);
// Fill list data
Map<String, Object> map = new HashMap<>();
map.put("date", "2024年11月20日");
writer.fill(map, writeSheet);
// Fill statistical information
List<List<String>> totalList = new ArrayList<>();
totalList.add(Arrays.asList(null, null, null, "统计: 1000"));
writer.write(totalList, writeSheet);
}
}
Template
Result

Horizontal Fill
Overview
Fill list data horizontally, suitable for scenarios with dynamic column numbers.
Code Example
@Test
public void horizontalFill() {
String templateFileName = "path/to/horizontal.xlsx";
try (ExcelWriter writer = FastExcel.write("horizontalFill.xlsx").withTemplate(templateFileName).build()) {
WriteSheet writeSheet = FastExcel.writerSheet().build();
FillConfig config = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build();
writer.fill(data(), config, writeSheet);
Map<String, Object> map = new HashMap<>();
map.put("date", "2024年11月20日");
writer.fill(map, writeSheet);
}
}
Template
Result

Fill Multiple Lists Together
Overview
Support filling multiple lists simultaneously, with prefixes to differentiate between lists.
Code Example
@Test
public void compositeFill() {
String templateFileName = "path/to/composite.xlsx";
try (ExcelWriter writer = FastExcel.write("compositeFill.xlsx").withTemplate(templateFileName).build()) {
WriteSheet writeSheet = FastExcel.writerSheet().build();
// Use FillWrapper for filling multiple lists
writer.fill(new FillWrapper("data1", data()), writeSheet);
writer.fill(new FillWrapper("data2", data()), writeSheet);
writer.fill(new FillWrapper("data3", data()), writeSheet);
Map<String, Object> map = new HashMap<>();
map.put("date", new Date());
writer.fill(map, writeSheet);
}
}
Template

Result
