Spring boot实现Excel导出文件

Spring boot实现Excel导出文件


1、增加依赖

ps:版本太高有概率发生slf4j的依赖冲突,版本改为4.1.2后冲突自动消失。

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>

2、Controller书写

有这种导出需求的必然都是在浏览器操作,所以直接controller请求:

/**
 * 导出Excel
 */
@GetMapping("exportToExcel")
public void exportToExcel(HttpServletResponse response) throws IOException {
	Workbook wb = homePageManager.exportToExcel();
    OutputStream output = response.getOutputStream();
    String fileName = "接入详情.xlsx";
    try {
        fileName = URLEncoder.encode(fileName, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    response.setHeader("Content-disposition", "attachment;filename=" + fileName + ";" + "filename*=utf-8''" + fileName);
    wb.write(output);
    output.close();
}

3、Service书写

Service

Workbook exportToExcel2();

ServiceImpl

@Override
public Workbook exportToExcel() {
	//这是表头
	String[] arr = {"名称","年龄"};
	//这是具体数据
	List list1 = new ArrayList<>();
	list1.add("张三");
	list1.add("18");
	List list2 = new ArrayList<>();
	list2.add("李四");
	list2.add("33");
	List<List> list = new ArrayList<>();
	list.add(list1);
	list.add(list2);
    return ExcelWrite.writeToExcelByList(arr, list);
}

4、具体的Excel方法


public static Workbook writeToExcelByList(String[] array, List<List> list) {
        //创建工作薄
        Workbook wb = new XSSFWorkbook();
        //标题和页码
        CellStyle titleStyle = wb.createCellStyle();
        // 设置单元格对齐方式,水平居左
        titleStyle.setAlignment(HorizontalAlignment.LEFT);
        // 设置字体样式
        Font titleFont = wb.createFont();
        // 字体高度
        titleFont.setFontHeightInPoints((short) 12);
        // 字体样式
        titleFont.setFontName("黑体");
        titleStyle.setFont(titleFont);
        //创建sheet
        Sheet sheet = wb.createSheet("接入详情");
        // 自动设置宽度
        sheet.autoSizeColumn(0);
        // 在sheet中添加标题行// 行数从0开始
        Row row = sheet.createRow((int) 0);
        for (int i = 0; i < array.length; i++) {
            Cell cell = row.createCell(i);
            cell.setCellValue(array[i]);
            cell.setCellStyle(titleStyle);
        }
        // 数据样式 因为标题和数据样式不同 需要分开设置 不然会覆盖
        CellStyle dataStyle = wb.createCellStyle();
        // 设置居中样式,水平居中
        dataStyle.setAlignment(HorizontalAlignment.CENTER);
        //数据从序号1开始
        try {
            int index = 1;
            for (List value : list) {
                // 默认的行数从0开始,为了统一格式设置从1开始,就是从excel的第二行开始
                row = sheet.createRow(index);
                index++;
                List data = value;
                for (int j = 0; j < data.size(); j++) {
                    Cell cell = row.createCell(j);
                    // 为当前列赋值
                    cell.setCellValue(data.get(j).toString());
                    //设置数据的样式
                    cell.setCellStyle(dataStyle);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return wb;
    }

5、效果图

在这里插入图片描述

我试了好多遍都可行,代码直接照抄就行,处理少部分需要修改,肯定能够成功。

在postman测试的话,只需要如下操作:
在这里插入图片描述

–我是“道祖且长”,一个在互联网"苟且偷生"的Java程序员
“有任何问题,可评论,我看到就会回复”

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Spring Boot导出Excel文件,可以使用Apache POI库。以下是一个简单的示例: 1. 添加POI依赖到pom.xml文件: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.0</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.0</version> </dependency> ``` 2. 创建一个Controller方法来生成Excel文件: ```java @GetMapping("/export") public void exportToExcel(HttpServletResponse response) throws IOException { // 创建工作簿 Workbook workbook = new XSSFWorkbook(); // 创建工作表 Sheet sheet = workbook.createSheet("Sheet 1"); // 创建表头行 Row headerRow = sheet.createRow(0); headerRow.createCell(0).setCellValue("Name"); headerRow.createCell(1).setCellValue("Age"); // 填充数据 List<Person> people = personService.getAllPeople(); int rowNum = 1; for (Person person : people) { Row row = sheet.createRow(rowNum++); row.createCell(0).setCellValue(person.getName()); row.createCell(1).setCellValue(person.getAge()); } // 设置响应头 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setHeader("Content-Disposition", "attachment; filename=\"people.xlsx\""); // 输出Excel文件 OutputStream outputStream = response.getOutputStream(); workbook.write(outputStream); outputStream.close(); } ``` 3. 在上面的代码中,我们首先创建了一个工作簿和一个工作表。然后创建表头行和填充数据行。最后,将响应设置为Excel文件,并将工作簿写入响应输出流中。 4. 在上面的代码中,我们使用了一个名为Person的类来存储人员信息。您需要根据您的数据模型调整代码。 这就是在Spring Boot导出Excel文件的基本步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三七有脾气

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值