当前位置:   article > 正文

Spring boot实现Excel导出文件_spring xssfworkbook

spring xssfworkbook

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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

3、Service书写

Service

Workbook exportToExcel2();
  • 1

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);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

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;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

5、效果图

在这里插入图片描述

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/321512
推荐阅读
相关标签
  

闽ICP备14008679号