21xrx.com
2024-12-22 21:36:32 Sunday
登录
文章检索 我的文章 写文章
Java实现大规模Excel数据导出
2023-06-16 16:26:35 深夜i     --     --
Java poi EasyExcel Excel导出 大量数据

在企业级应用程序中,数据的导出总是必不可少的一部分。以Excel为代表的表格类应用软件是处理这部分业务的首选工具。在Java技术中有多种方式来实现Excel数据导出,本文将介绍其中一种基于poi和EasyExcel的Java实现方式。

一、poi介绍

Apache POI是使用Java编写的用于处理Office文档的开源项目,提供了创建、读取和修改Excel、Word和PowerPoint等文档的API。本文主要使用poi提供的HSSFWorkbook和XSSFWorkbook两个类来创建Excel文档。其中,HSSFWorkbook用于创建Excel .xls格式的文档,而XSSFWorkbook则用于创建Excel .xlsx格式的文档。

二、EasyExcel介绍

EasyExcel是基于poi封装而来的一款JavaExcel操作库,它封装了poi中复杂的API,对外提供了简单易用的API接口。EasyExcel能够快速高效地完成大规模Excel数据导入导出操作,且支持多种格式,如.csv、.xls、.xlsx等,使用时只需要依赖EasyExcel jar包即可。

三、实现步骤

1. 引入poi和EasyExcel相关jar包

在pom.xml中引入如下依赖:


   org.apache.poi

   poi

   3.17

   org.apache.poi

   poi-ooxml

   3.17

   com.alibaba

   easyexcel

   2.2.10

2. 使用poi创建Excel文件


// 创建HSSFWorkbook,该对象用于创建Excel .xls格式的文档

HSSFWorkbook workbook = new HSSFWorkbook();

// 创建Sheet对象

HSSFSheet sheet = workbook.createSheet("数据导出");

// 创建Row对象

HSSFRow row = sheet.createRow(0);

// 创建Cell对象

HSSFCell cell = row.createCell(0);

cell.setCellValue("姓名");

// 操作文件流,将文件保存到磁盘上

String fileName = "test.xls";

FileOutputStream fos = new FileOutputStream(fileName);

workbook.write(fos);

3. 使用EasyExcel导出Excel数据


// 设置导出参数

String fileName = "test.xlsx";

response.setContentType("application/vnd.ms-excel");

response.setCharacterEncoding("utf-8");

response.setHeader("Content-disposition", "attachment;filename=" + fileName);

// 创建ExcelWriter对象

ExcelWriter writer = EasyExcel.write(response.getOutputStream()).build();

// 创建sheet并写入数据

Sheet sheet = new Sheet(1, 0, DemoData.class);

// 设置自适应宽度

sheet.setAutoWidth(Boolean.TRUE);

// 向文件中写入数据

writer.write(dataList, sheet);

// 关闭输出流

writer.finish();

四、代码案例


public class ExcelUtil {

  /**

   * 使用poi创建Excel文件

   *

   * @throws IOException 异常

   */

  public static void createExcel() throws IOException {

    // 创建HSSFWorkbook,该对象用于创建Excel .xls格式的文档

    HSSFWorkbook workbook = new HSSFWorkbook();

    // 创建Sheet对象

    HSSFSheet sheet = workbook.createSheet("数据导出");

    // 创建Row对象

    HSSFRow row = sheet.createRow(0);

    // 创建Cell对象

    HSSFCell cell = row.createCell(0);

    cell.setCellValue("姓名");

    // 操作文件流,将文件保存到磁盘上

    String fileName = "test.xls";

    FileOutputStream fos = new FileOutputStream(fileName);

    workbook.write(fos);

  }

  /**

   * 使用EasyExcel导出Excel数据

   *

   * @param response  响应对象

   * @param dataList  数据列表

   * @param sheetName sheet名称

   * @param fileName  导出文件名

   * @param dataClass 数据类型

   * @throws IOException 异常

   */

  public static void exportExcel(HttpServletResponse response, List dataList, String sheetName, String fileName, Class dataClass)

      throws IOException {

    // 设置导出参数

    response.setContentType("application/vnd.ms-excel");

    response.setCharacterEncoding("utf-8");

    response.setHeader("Content-disposition", "attachment;filename=" + fileName);

    // 创建ExcelWriter对象

    ExcelWriter writer = EasyExcel.write(response.getOutputStream(), dataClass).build();

    // 创建sheet并写入数据

    Sheet sheet = new Sheet(1, 0, dataClass);

    sheet.setSheetName(sheetName);

    // 设置自适应宽度

    sheet.setAutoWidth(Boolean.TRUE);

    // 向文件中写入数据

    if (!CollectionUtils.isEmpty(dataList)) {

      writer.write(dataList, sheet);

    }

    // 关闭输出流

    writer.finish();

  }

}

五、关键词

Java、poi、EasyExcel、Excel导出、大量数据

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复