EasyExcel 导出
在本指南中,我们将演示如何使用 EasyExcelUtils
和 EasyExcelResponseUtils
来支持 Excel 导出功能。EasyExcelUtils
主要用于将数据导出到本地文件,而 EasyExcelResponseUtils
则用于将导出的 Excel 表格文件直接下载到客户端。
1. 使用 EasyExcelUtils
导出数据到 Excel 文件
以下示例演示了如何使用 EasyExcelUtils
将查询结果导出到本地的 Excel 文件中。
示例代码:
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import com.litongjava.db.activerecord.Db;
import com.litongjava.db.activerecord.Record;
import com.litongjava.table.utils.EasyExcelUtils;
import com.litongjava.tio.utils.environment.EnvUtils;
public class ServiceExportDemo {
public static void main(String[] args) {
// 加载环境配置
EnvUtils.load();
// 配置数据库连接
new DbConfig().config();
// 查询数据
String sql = "select * from service where service_id < 1000";
List<Record> records = Db.find(sql);
// 导出数据到 Excel 文件
try (OutputStream outputStream = new FileOutputStream("service.xlsx")) {
EasyExcelUtils.write(outputStream, "service", records);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
说明:
- 环境配置与数据库连接: 通过
EnvUtils.load()
加载环境配置,并通过new DbConfig().config()
配置数据库连接。 - 查询数据: 使用
Db.find(sql)
执行 SQL 查询,获取结果集records
。 - 导出数据: 使用
EasyExcelUtils.write()
方法将数据导出到本地的 Excel 文件中。
2. 使用 EasyExcelResponseUtils
实现 Excel 文件的下载
以下示例展示了如何通过 EasyExcelResponseUtils
实现将 Excel 文件直接导出并提供客户端下载的功能。
示例代码:
import java.io.IOException;
import java.util.List;
import com.litongjava.db.activerecord.Db;
import com.litongjava.db.activerecord.Record;
import com.litongjava.table.utils.EasyExcelResponseUtils;
import com.litongjava.tio.boot.http.TioRequestContext;
import com.litongjava.tio.http.common.HttpRequest;
import com.litongjava.tio.http.common.HttpResponse;
import com.litongjava.annotation.RequestPath;
public class EexportController {
@RequestPath("/export-excel")
public HttpResponse exportExcel(String f, HttpRequest request) throws IOException {
// 生成文件名
String filename = "service_export_" + System.currentTimeMillis() + ".xlsx";
// 查询数据
String sql = "select * from service where service_id < 1000";
List<Record> records = Db.find(sql);
// 导出并提供下载
return EasyExcelResponseUtils.exportRecords(TioRequestContext.getResponse(), filename, "service", records);
}
}
说明:
- 生成文件名: 使用
System.currentTimeMillis()
生成唯一的文件名,避免文件名冲突。 - 查询数据: 与
EasyExcelUtils
类似,通过 SQL 查询获取数据记录。 - 导出并下载: 使用
EasyExcelResponseUtils.exportRecords()
方法将数据导出为 Excel 文件,并将该文件作为 HTTP 响应提供下载。
通过以上两个示例,您可以轻松地在项目中集成 Excel 导出功能,无论是将数据保存到本地文件,还是直接提供客户端下载。