分享免费的编程资源和教程

网站首页 > 技术教程 正文

Spring Boot根据List生成Excel导入模板的表头信息?

goqiw 2025-01-12 13:53:31 技术教程 2 ℃ 0 评论

在Spring Boot应用程序中,可以使用Apache POI库生成Excel文件。有这样一个需求,得到的表头是一个String的List,然后通过这个表头来生成一个Excel表格,用来完成数据模板的导出操作。下面我们就通过具体的例子来看看如何通过String列表来生成动态表头操作。

添加Maven依赖

首先,在pom.xml中添加Apache POI的依赖。

<dependencies>
    <!-- Apache POI for Excel -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.3</version>
    </dependency>
</dependencies>

创建服务类用于生成Excel文件

下面是一个示例代码,展示如何使用Apache POI生成Excel表,并根据传入的字段列表生成表头。

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@Service
public class ExcelService {

    public void generateExcelTemplate(List<String> headers, HttpServletResponse response) throws IOException {
        // 创建一个新的工作簿
        Workbook workbook = new XSSFWorkbook();
        // 创建一个工作表
        Sheet sheet = workbook.createSheet("Template");

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

        // 根据List中的字段创建表头
        for (int i = 0; i < headers.size(); i++) {
            Cell cell = headerRow.createCell(i);
            cell.setCellValue(headers.get(i));

            // 设置表头样式
            CellStyle headerStyle = workbook.createCellStyle();
            Font font = workbook.createFont();
            font.setBold(true);
            headerStyle.setFont(font);
            cell.setCellStyle(headerStyle);
        }

        // 自动调整列宽
        for (int i = 0; i < headers.size(); i++) {
            sheet.autoSizeColumn(i);
        }

        // 设置响应头,指示浏览器下载文件
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setHeader("Content-Disposition", "attachment; filename=template.xlsx");

        // 将工作簿写入到响应输出流
        workbook.write(response.getOutputStream());
        workbook.close();
    }
}

创建Controller以生成并下载模板

创建一个Controller,通过HTTP请求生成并下载Excel模板文件。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

@RestController
public class ExcelController {

    @Autowired
    private ExcelService excelService;

    @GetMapping("/download-template")
    public void downloadTemplate(@RequestParam List<String> headers, HttpServletResponse response) throws IOException {
        // 调用服务生成Excel模板
        excelService.generateExcelTemplate(headers, response);
    }
}

测试

项目创建完成之后,我们可以通过调用上面的接口来创建一个指定表头的Excel模板如下所示。

http://localhost:8080/download-template?headers=Name,Age,Email

调用上面的接口会生成一个带有Name、Age、Email作为表头的Excel文件。

上面代码中实现了如何在Spring Boot应用程序中使用Apache POI库生成Excel文件,我们可以根据List生成表头信息的步骤。用户可以通过传入不同的字段列表来生成定制的Excel导入模板。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表