EasyExcel模版导出表格
时间: 2025-01-05 21:12:33 浏览: 14
### 如何使用 EasyExcel 进行模板导出
通过 EasyExcel 可以方便地实现基于模板的 Excel 导出功能。这种方式允许预先设计好 Excel 文件的格式和样式,仅需填充动态数据即可。
#### 使用模板导出的关键在于定义一个 Java 类映射到 Excel 中的数据结构,并利用 `@ExcelProperty` 注解指定列名和其他属性[^1]。
下面是一个具体的例子展示如何完成这一操作:
```java
import com.alibaba.excel.annotation.ExcelProperty;
import java.util.Date;
public class DemoData {
@ExcelProperty("字符串标题")
private String string;
@ExcelProperty("日期标题")
private Date date;
@ExcelProperty(
value = "数字标题",
format = "#.##"
)
private double doubleData;
// Getters and Setters...
}
```
为了实际执行导出过程,则需要编写如下所示的服务方法:
```java
import com.alibaba.excel.EasyExcel;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
@Service
public class ExportService {
public void exportWithTemplate(HttpServletResponse response) throws IOException {
// 设置响应头信息以便浏览器下载文件而不是打开它
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// 定义要保存的文件名称并处理中文乱码问题
String fileName = URLEncoder.encode("测试模版导出", "UTF-8").replaceAll("\\+", "%20");
// 创建列表对象用于存储待写入的数据记录
List<DemoData> list = new ArrayList<>();
// 向list中添加若干条DemoData实例作为模拟数据
// 调用EasyExcel.write() 方法传入输出流以及实体类类型参数,
// 接着调用inMemory(false),表示不加载整个工作簿至内存;
// 再次链式调用sheet().doWrite(list), 将准备好的数据集传递进去。
EasyExcel.write(response.getOutputStream(), DemoData.class).withTemplate("/template/demo.xlsx") // 加载模板路径
.sheet()
.doFill(list); // doFill 代替 doWrite 来适应于模板场景
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
}
}
```
此段代码展示了怎样创建服务端接口来触发带有预设样式的 Excel 文件生成流程。这里特别注意的是 `.withTemplate()` 函数指定了本地磁盘上的模板位置;而`.doFill()` 则用来向已有的单元格内填充值而非新建空白表单再逐个赋值[^2]。
阅读全文