Excel 导出指南

在本指南中,我们将演示如何使用 EasyExcelUtilsEasyExcelResponseUtils 来支持 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();
    }
  }
}

说明:

  1. 环境配置与数据库连接: 通过 EnvUtils.load() 加载环境配置,并通过 new DbConfig().config() 配置数据库连接。
  2. 查询数据: 使用 Db.find(sql) 执行 SQL 查询,获取结果集 records
  3. 导出数据: 使用 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.tio.http.server.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);
  }
}

说明:

  1. 生成文件名: 使用 System.currentTimeMillis() 生成唯一的文件名,避免文件名冲突。
  2. 查询数据:EasyExcelUtils 类似,通过 SQL 查询获取数据记录。
  3. 导出并下载: 使用 EasyExcelResponseUtils.exportRecords() 方法将数据导出为 Excel 文件,并将该文件作为 HTTP 响应提供下载。

通过以上两个示例,您可以轻松地在项目中集成 Excel 导出功能,无论是将数据保存到本地文件,还是直接提供客户端下载。