0
点赞
收藏
分享

微信扫一扫

Java如何往指定excel填充数据并返回响应流给前端 来解决一个具体问题的方案

Java如何往指定excel填充数据并返回响应流给前端

在实际的开发中,我们经常会遇到需要将数据填充到excel表格中,并将生成的excel文件返回给前端的需求。本文将介绍使用Java如何实现这一需求,并提供示例代码。

解决方案概述

要实现往指定excel填充数据并返回响应流给前端,我们可以借助Apache POI库来操作excel文件。Apache POI是一个用于操作Microsoft Office格式文件的Java库,可以方便地读取、写入和修改excel文件。

具体实现步骤如下:

  1. 创建一个新的excel工作簿;
  2. 创建一个工作表,并设置表头;
  3. 填充数据到工作表中;
  4. 将生成的excel文件写入响应流中,返回给前端。

下面我们将逐步介绍每个步骤的具体实现。

代码示例

创建一个新的excel工作簿

首先,我们需要创建一个新的excel工作簿。可以使用XSSFWorkbook类来创建一个XLSX格式的excel文件,或者使用HSSFWorkbook类来创建一个XLS格式的excel文件。

// 创建一个新的XLSX格式的excel工作簿
XSSFWorkbook workbook = new XSSFWorkbook();

// 或者创建一个新的XLS格式的excel工作簿
// HSSFWorkbook workbook = new HSSFWorkbook();

创建一个工作表,并设置表头

接下来,我们需要创建一个工作表,并设置表头。可以使用createSheet方法创建一个新的工作表,然后使用createRow方法创建一行,再使用createCell方法创建单元格,并设置单元格的值。

// 创建一个工作表
XSSFSheet sheet = workbook.createSheet("Sheet1");

// 创建表头行
XSSFRow headerRow = sheet.createRow(0);

// 创建表头单元格,并设置值
XSSFCell cell = headerRow.createCell(0);
cell.setCellValue("姓名");

cell = headerRow.createCell(1);
cell.setCellValue("年龄");

填充数据到工作表中

然后,我们可以将数据填充到工作表中。可以使用createRow方法创建新的行,然后使用createCell方法创建单元格,并设置单元格的值。

// 假设我们有一个包含多个人员信息的列表
List<Person> personList = new ArrayList<>();
personList.add(new Person("张三", 20));
personList.add(new Person("李四", 25));
personList.add(new Person("王五", 30));

// 遍历列表,将每个人的信息填充到工作表中
for (int i = 0; i < personList.size(); i++) {
    Person person = personList.get(i);

    // 创建新行
    XSSFRow row = sheet.createRow(i + 1);

    // 创建单元格,并设置值
    XSSFCell nameCell = row.createCell(0);
    nameCell.setCellValue(person.getName());

    XSSFCell ageCell = row.createCell(1);
    ageCell.setCellValue(person.getAge());
}

将生成的excel文件写入响应流中

最后,我们将生成的excel文件写入响应流中,并返回给前端。可以使用response对象的getOutputStream方法获取响应流,然后使用workbook对象的write方法将excel文件写入响应流。

// 将生成的excel文件写入响应流中
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-disposition", "attachment; filename=example.xlsx");

OutputStream outputStream = response.getOutputStream();
workbook.write(outputStream);
outputStream.close();

示例完整代码

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFCell;

import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

public class ExcelExportExample {
    public void exportToExcel(HttpServletResponse response) throws IOException {
        // 创建一个新的XLSX格式的excel工作簿
        XSSFWorkbook workbook = new XSSFWorkbook();

        // 创建一个工作表
        XSSFSheet sheet = workbook.createSheet("Sheet1");

        // 创建表头行
        XSSFRow headerRow = sheet.createRow(0);

        // 创建表头单元
举报

相关推荐

0 条评论