Sheet 页
本章节将介绍设置 Sheet 来写入数据的使用。
注意: 微软 Excel 中 Sheet 名称最多为 31 个字符。超过此长度的名称将被自动截断,并记录警告日志。
写入同一个 Sheet
概述
分批写入数据到同一个 Sheet。
代码示例
@Test
public void writeSingleSheet() {
String fileName = "repeatedWrite" + System.currentTimeMillis() + ".xlsx";
try (ExcelWriter excelWriter = FesodSheet.write(fileName, DemoData.class).build()) {
WriteSheet writeSheet = FesodSheet.writerSheet("Sheet1").build();
for (int i = 0; i < 5; i++) {
excelWriter.write(data(), writeSheet);
}
}
}
结果
| A | B | C | |
| 1 | 字符串标题 | 日期标题 | 数字标题 |
| 2 | 字符串0 | 2026-07-31 20:50:23 | 0.56 |
| 3 | 字符串1 | 2026-07-31 20:50:23 | 0.56 |
| 4 | 字符串2 | 2026-07-31 20:50:23 | 0.56 |
| ⋮ | … | … | … |
| 51 | 字符串9 | 2026-07-31 20:50:23 | 0.56 |
| Sheet1 |
写入多个 Sheet
概述
分批写入数据到多个 Sheet,可实现大数据量的分页写入。
代码示例
@Test
public void writeMultiSheet() {
String fileName = "repeatedWrite" + System.currentTimeMillis() + ".xlsx";
try (ExcelWriter excelWriter = FesodSheet.write(fileName, DemoData.class).build()) {
for (int i = 0; i < 5; i++) {
WriteSheet writeSheet = FesodSheet.writerSheet(i, "Sheet" + i).build();
excelWriter.write(data(), writeSheet);
}
}
}
结果
| A | B | C | |
| 1 | 字符串标题 | 日期标题 | 数字标题 |
| 2 | 字符串0 | 2026-07-31 20:50:23 | 0.56 |
| 3 | 字符串1 | 2026-07-31 20:50:23 | 0.56 |
| 4 | 字符串2 | 2026-07-31 20:50:23 | 0.56 |
| ⋮ | … | … | … |
| 11 | 字符串9 | 2026-07-31 20:50:23 | 0.56 |
| Sheet0 | Sheet1 | Sheet2 | Sheet3 | Sheet4 |
使用 Table 写入
概述
支持在一个 Sheet 中使用多个 Table 分块写入。
代码示例
@Test
public void tableWrite() {
String fileName = "tableWrite" + System.currentTimeMillis() + ".xlsx";
try (ExcelWriter excelWriter = FesodSheet.write(fileName).build()) {
WriteSheet writeSheet = FesodSheet.writerSheet("Table示例").build();
WriteTable table1 = FesodSheet.writerTable(0).head(DemoData.class).build();
WriteTable table2 = FesodSheet.writerTable(1).head(DemoData.class).build();
excelWriter.write(data(), writeSheet, table1);
excelWriter.write(data(), writeSheet, table2);
}
}
结果
| A | B | C | |
| 1 | 字符串标题 | 日期标题 | 数字标题 |
| 2 | 字符串0 | 2026-07-31 20:50:23 | 0.56 |
| 3 | 字符串1 | 2026-07-31 20:50:23 | 0.56 |
| 4 | 字符串2 | 2026-07-31 20:50:23 | 0.56 |
| ⋮ | … | … | … |
| 11 | 字符串9 | 2026-07-31 20:50:23 | 0.56 |
| 12 | 字符串标题 | 日期标题 | 数字标题 |
| 13 | 字符串0 | 2026-07-31 20:50:23 | 0.56 |
| 14 | 字符串1 | 2026-07-31 20:50:23 | 0.56 |
| 15 | 字符串2 | 2026-07-31 20:50:23 | 0.56 |
| ⋮ | … | … | … |
| 22 | 字符串9 | 2026-07-31 20:50:23 | 0.56 |
| Table示例 |
备注
每个 WriteTable 各写入一行自己的表头,因此表头分别出现在第 1 行和第 12 行,两段各 10 行数据依次位于
2-11 行和 13-22 行。
这里把表头声明在每个 WriteTable 上,而不是在 Writer 上;当各个 Table 的数据类型不同时也正需要这种写法。
如果改用 FesodSheet.write(fileName, DemoData.class) 构建 Writer,Sheet 自身也会有表头,
会在第一个 Table 的表头之上多写一行。