java
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;
}
/**
* 动态头,实时生成头写入
* <p>
* 思路是这样子的,先创建List<String>头格式的sheet仅仅写入头,然后通过table 不写入头的方式 去写入数据
*
* <p>
* 1. 创建excel对应的实体对象
* <p>
* 2. 然后写入table即可
*/
private void dynamicHeadWrite() {
// 获取保存路径
String path = surveyLocalPath;
// 设置文件名
String fileName = path + "test_excel.xls";
EasyExcel.write(fileName)
// 这里放入动态头
.head(head()).sheet("模板")
// 当然这里数据也可以用 List<List<String>> 去传入
.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;
}
}