springboot 结合easyexcel实现动态表头的方法

springboot 结合easyexcel实现动态表头的方法_第1张图片

package com.yili.survey.excel;

import com.alibaba.excel.EasyExcel;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.ArrayList;
import java.util.List;

/**
 * 类名称:ExcelTest
 * 描述:
 * 创建人:赵英杰
 * 创建时间:2023-09-05 11:17
 */
@SpringBootTest(classes = ExcelTest.class)
public class ExcelTest {

    @Value("${static.temp}")
    private String surveyLocalPath;

    @Test
    void test() {
        dynamicHeadWrite();
    }

    /**
     * 数据
     *
     * @return {@link List }<{@link List }<{@link String }>>
     * @author ZhaoYingJie
     * @date 2023-09-05 14:24:22
     */
    private List<List<String>> data() {

        List<List<String>> data = new ArrayList<>();
        List<String> row1 = new ArrayList<>();
        row1.add("喜欢吃苹果的数量");
        row1.add("10");
        row1.add("5");
        data.add(row1);

        List<String> row2 = new ArrayList<>();
        row2.add("喜欢吃西瓜的数量");
        row2.add("8");
        row2.add("3");
        data.add(row2);
        return data;
    }

    /**
     * 动态头,实时生成头写入
     * 

* 思路是这样子的,先创建List头格式的sheet仅仅写入头,然后通过table 不写入头的方式 去写入数据 * *

* 1. 创建excel对应的实体对象 *

* 2. 然后写入table即可 */ private void dynamicHeadWrite() { // 获取保存路径 String path = surveyLocalPath; // 设置文件名 String fileName = path + "test_excel.xls"; EasyExcel.write(fileName) // 这里放入动态头 .head(head()).sheet("模板") // 当然这里数据也可以用 List> 去传入 .doWrite(data()); } /** * 头 * * @return {@link List }<{@link List }<{@link String }>> * @author ZhaoYingJie * @date 2023-09-05 14:24:04 */ private List<List<String>> head() { List<List<String>> list = new ArrayList<>(); List<String> head0 = new ArrayList<>(); head0.add("Q1喜欢吃什么"); head0.add("Q1"); List<String> head1 = new ArrayList<>(); head1.add("Q1喜欢吃什么"); head1.add("Q1"); List<String> head2 = new ArrayList<String>(); head2.add("Q2喜欢吃什么_苹果"); head2.add("Q2_1"); List<String> head3 = new ArrayList<String>(); head3.add("Q2喜欢吃什么_苹果"); head3.add("Q2_1"); List<String> head4 = new ArrayList<String>(); head4.add("Q2喜欢吃什么_西瓜"); head4.add("Q2_2"); List<String> head5 = new ArrayList<String>(); head5.add("Q2喜欢吃什么_西瓜"); head5.add("Q2_2"); list.add(head0); list.add(head1); list.add(head2); list.add(head3); list.add(head4); list.add(head5); return list; } }

你可能感兴趣的:(Java,spring,boot,后端)