add ExcelConfig

This commit is contained in:
Looly
2024-08-10 23:35:34 +08:00
parent 103e48cf06
commit 6440c302a5
19 changed files with 539 additions and 426 deletions

View File

@@ -27,7 +27,7 @@ public class CellEditorTest {
@org.junit.jupiter.api.Test
public void readTest(){
final ExcelReader excelReader= ExcelUtil.getReader("cell_editor_test.xlsx");
excelReader.setCellEditor(new ExcelHandler());
excelReader.getConfig().setCellEditor(new ExcelHandler());
final List<Test> excelReaderObjects=excelReader.readAll(Test.class);
Assertions.assertEquals("0", excelReaderObjects.get(0).getTest1());

View File

@@ -19,6 +19,7 @@ import org.dromara.hutool.core.map.MapUtil;
import org.dromara.hutool.core.util.ObjUtil;
import lombok.Data;
import org.apache.poi.ss.usermodel.Cell;
import org.dromara.hutool.poi.excel.ExcelConfig;
import org.dromara.hutool.poi.excel.ExcelUtil;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled;
@@ -48,7 +49,7 @@ public class ExcelReadTest {
headerAlias.put("库房", "storageName");
headerAlias.put("盘点权限", "checkPerm");
headerAlias.put("领料审批权限", "allotAuditPerm");
reader.setHeaderAlias(headerAlias);
reader.getConfig().setHeaderAlias(headerAlias);
// 读取list时默认首个非空行为标题
final List<List<Object>> read = reader.read(0, Integer.MAX_VALUE, true);
@@ -146,10 +147,11 @@ public class ExcelReadTest {
@Test
public void excelReadToBeanListTest() {
final ExcelReader reader = ExcelUtil.getReader(ResourceUtil.getStream("aaa.xlsx"));
reader.addHeaderAlias("姓名", "name");
reader.addHeaderAlias("年龄", "age");
reader.addHeaderAlias("性别", "gender");
reader.addHeaderAlias("鞋码", "shoeSize");
final ExcelConfig config = reader.getConfig();
config.addHeaderAlias("姓名", "name");
config.addHeaderAlias("年龄", "age");
config.addHeaderAlias("性别", "gender");
config.addHeaderAlias("鞋码", "shoeSize");
final List<Person> all = reader.readAll(Person.class);
Assertions.assertEquals("张三", all.get(0).getName());
@@ -162,9 +164,10 @@ public class ExcelReadTest {
@Disabled
public void excelReadToBeanListTest2() {
final ExcelReader reader = ExcelUtil.getReader("f:/test/toBean.xlsx");
reader.addHeaderAlias("姓名", "name");
reader.addHeaderAlias("年龄", "age");
reader.addHeaderAlias("性别", "gender");
final ExcelConfig config = reader.getConfig();
config.addHeaderAlias("姓名", "name");
config.addHeaderAlias("年龄", "age");
config.addHeaderAlias("性别", "gender");
final List<Person> all = reader.read(0, 2, Person.class);
for (final Person person : all) {
@@ -220,7 +223,8 @@ public class ExcelReadTest {
@Test
public void nullValueEditTest(){
final ExcelReader reader = ExcelUtil.getReader("null_cell_test.xlsx");
reader.setCellEditor((cell, value)-> ObjUtil.defaultIfNull(value, "#"));
final ExcelConfig config = reader.getConfig();
config.setCellEditor((cell, value)-> ObjUtil.defaultIfNull(value, "#"));
final List<List<Object>> read = reader.read();
// 对于任意一个单元格有值的情况下之前的单元格值按照null处理
@@ -271,14 +275,14 @@ public class ExcelReadTest {
//https://gitee.com/dromara/hutool/issues/I5OSFC
final ExcelReader reader = ExcelUtil.getReader(ResourceUtil.getStream("read.xlsx"));
final List<Map<String, Object>> read = reader.read(1,2,2);
for (Map<String, Object> map : read) {
for (final Map<String, Object> map : read) {
Console.log(map);
}
//超出lastIndex 抛出相应提示startRowIndex row index 4 is greater than last row index 2.
//而非:Illegal Capacity: -1
try {
final List<Map<String, Object>> readGreaterIndex = reader.read(1,4,4);
} catch (Exception e) {
} catch (final Exception e) {
Console.log(e.toString());
}
}

View File

@@ -191,11 +191,12 @@ public class BigExcelWriteTest {
FileUtil.del(FileUtil.file(file));
final BigExcelWriter writer = ExcelUtil.getBigWriter(file);
//自定义标题
writer.addHeaderAlias("name", "姓名");
writer.addHeaderAlias("age", "年龄");
writer.addHeaderAlias("score", "分数");
writer.addHeaderAlias("isPass", "是否通过");
writer.addHeaderAlias("examDate", "考试时间");
final ExcelWriteConfig config = writer.getConfig();
config.addHeaderAlias("name", "姓名");
config.addHeaderAlias("age", "年龄");
config.addHeaderAlias("score", "分数");
config.addHeaderAlias("isPass", "是否通过");
config.addHeaderAlias("examDate", "考试时间");
// 合并单元格后的标题行,使用默认标题样式
writer.merge(4, "一班成绩单");
// 一次性写出内容,使用默认样式
@@ -234,8 +235,9 @@ public class BigExcelWriteTest {
final String path = "d:/test/issue1210.xlsx";
FileUtil.del(FileUtil.file(path));
final BigExcelWriter writer = ExcelUtil.getBigWriter(path);
writer.addHeaderAlias("id", "SN");
writer.addHeaderAlias("userName", "User Name");
final ExcelWriteConfig config = writer.getConfig();
config.addHeaderAlias("id", "SN");
config.addHeaderAlias("userName", "User Name");
final List<Map<String, Object>> list = new ArrayList<>();
list.add(new HashMap<String, Object>() {

View File

@@ -306,11 +306,12 @@ public class ExcelWriteTest {
FileUtil.del(FileUtil.file(file));
final ExcelWriter writer = ExcelUtil.getWriter(file);
// 自定义标题
writer.addHeaderAlias("name", "姓名");
writer.addHeaderAlias("age", "年龄");
writer.addHeaderAlias("score", "分数");
writer.addHeaderAlias("isPass", "是否通过");
writer.addHeaderAlias("examDate", "考试时间");
final ExcelWriteConfig config = writer.getConfig();
config.addHeaderAlias("name", "姓名");
config.addHeaderAlias("age", "年龄");
config.addHeaderAlias("score", "分数");
config.addHeaderAlias("isPass", "是否通过");
config.addHeaderAlias("examDate", "考试时间");
// 合并单元格后的标题行,使用默认标题样式
writer.merge(4, "一班成绩单");
// 一次性写出内容,使用默认样式
@@ -340,10 +341,11 @@ public class ExcelWriteTest {
final String file = "f:/test/test_alias.xlsx";
FileUtil.del(FileUtil.file(file));
final ExcelWriter writer = ExcelUtil.getWriter(file);
writer.setOnlyAlias(true);
final ExcelWriteConfig config = writer.getConfig();
config.setOnlyAlias(true);
// 自定义标题
writer.addHeaderAlias("name", "姓名");
writer.addHeaderAlias("age", "年龄");
config.addHeaderAlias("name", "姓名");
config.addHeaderAlias("age", "年龄");
// 合并单元格后的标题行,使用默认标题样式
writer.merge(4, "一班成绩单");
// 一次性写出内容,使用默认样式
@@ -372,10 +374,11 @@ public class ExcelWriteTest {
// 通过工具类创建writer
final String file = "d:/test/test_alias.xls";
final ExcelWriter writer = ExcelUtil.getWriter(file, "test1");
// writer.setOnlyAlias(true);
// 自定义标题
writer.addHeaderAlias("name", "姓名");
writer.addHeaderAlias("age", "年龄");
final ExcelWriteConfig config = writer.getConfig();
// writer.setOnlyAlias(true);
config.addHeaderAlias("name", "姓名");
config.addHeaderAlias("age", "年龄");
// 一次性写出内容,使用默认样式
writer.write(rows, true);
// 关闭writer释放内存
@@ -403,12 +406,13 @@ public class ExcelWriteTest {
// 通过工具类创建writer
final String file = "d:/test/test_alias.xls";
final ExcelWriter writer = ExcelUtil.getWriter(file, "test1");
writer.setOnlyAlias(true);
final ExcelWriteConfig config = writer.getConfig();
config.setOnlyAlias(true);
// 自定义标题
writer.addHeaderAlias("name", "姓名");
writer.addHeaderAlias("age", "年龄");
writer.addHeaderAlias("examDate", "考试时间");
config.addHeaderAlias("name", "姓名");
config.addHeaderAlias("age", "年龄");
config.addHeaderAlias("examDate", "考试时间");
// 一次性写出内容,使用默认样式
writer.write(rows, true);
@@ -438,12 +442,13 @@ public class ExcelWriteTest {
final String file = "e:/writeBeanTest.xlsx";
FileUtil.del(FileUtil.file(file));
final ExcelWriter writer = ExcelUtil.getWriter(file);
final ExcelWriteConfig config = writer.getConfig();
// 自定义标题
writer.addHeaderAlias("name", "姓名");
writer.addHeaderAlias("age", "年龄");
writer.addHeaderAlias("score", "分数");
writer.addHeaderAlias("isPass", "是否通过");
writer.addHeaderAlias("examDate", "考试时间");
config.addHeaderAlias("name", "姓名");
config.addHeaderAlias("age", "年龄");
config.addHeaderAlias("score", "分数");
config.addHeaderAlias("isPass", "是否通过");
config.addHeaderAlias("examDate", "考试时间");
// 合并单元格后的标题行,使用默认标题样式
writer.merge(4, "一班成绩单");
// 一次性写出内容,使用默认样式
@@ -471,9 +476,10 @@ public class ExcelWriteTest {
FileUtil.del(FileUtil.file(file));
final ExcelWriter writer = ExcelUtil.getWriter(file);
// 自定义标题
writer.addHeaderAlias("id", "编号");
writer.addHeaderAlias("num", "");
writer.addHeaderAlias("body", "内容");
final ExcelWriteConfig config = writer.getConfig();
config.addHeaderAlias("id", "");
config.addHeaderAlias("num", "序号");
config.addHeaderAlias("body", "内容");
// 一次性写出内容,使用默认样式
writer.write(rows, true);
// 关闭writer释放内存
@@ -529,18 +535,19 @@ public class ExcelWriteTest {
rows.add(tempList);
}
final ExcelWriter writer = ExcelUtil.getWriter("D:\\test\\multiSheet.xlsx", "正常数据");
writer.addHeaderAlias("1", "row1");
writer.addHeaderAlias("3", "row2");
writer.setOnlyAlias(true);
final ExcelWriteConfig config = writer.getConfig();
config.addHeaderAlias("1", "row1");
config.addHeaderAlias("3", "row2");
config.setOnlyAlias(true);
writer.write(rows, true);
writer.autoSizeColumnAll(false, 0);
//表2
writer.setSheet("当前重复数据");
writer.clearHeaderAlias();
writer.addHeaderAlias("3", "行3");
writer.addHeaderAlias("1", "行1");
config.clearHeaderAlias();
config.addHeaderAlias("3", "行3");
config.addHeaderAlias("1", "行1");
writer.write(rows, true);
writer.autoSizeColumnAll(false, 0);
@@ -749,7 +756,7 @@ public class ExcelWriteTest {
//通过工具类创建writer
FileUtil.del(FileUtil.file("d:/test/writeTest2123.xlsx"));
final ExcelWriter writer = ExcelUtil.getWriter("d:/test/writeTest2123.xlsx");
writer.addHeaderAlias("xmnf", "项目年份");//1
writer.getConfig().addHeaderAlias("xmnf", "项目年份");//1
//合并单元格后的标题行,使用默认标题样式
writer.merge(7, "测试标题");

View File

@@ -37,9 +37,10 @@ public class Issue2221Test {
public void writeDuplicateHeaderAliasTest() {
final ExcelWriter writer = ExcelUtil.getWriter("d:/test/duplicateAlias.xlsx");
// 设置别名
writer.addHeaderAlias("androidLc", "安卓");
writer.addHeaderAlias("androidAc", "安卓");
writer.setOnlyAlias(true);
final ExcelWriteConfig config = writer.getConfig();
config.addHeaderAlias("androidLc", "安卓");
config.addHeaderAlias("androidAc", "安卓");
config.setOnlyAlias(true);
// 写入数据
final List<Map<Object, Object>> data = ListUtil.view(
@@ -77,12 +78,13 @@ public class Issue2221Test {
writer.setFreezePane(2);
// 设置别名
writer.addHeaderAlias("date", "日期");
writer.addHeaderAlias("androidLc", "安卓");
writer.addHeaderAlias("iosLc", "iOS");
writer.addHeaderAlias("androidAc", " 安卓");
writer.addHeaderAlias("iosAc", " iOS");
writer.setOnlyAlias(true);
final ExcelWriteConfig config = writer.getConfig();
config.addHeaderAlias("date", "日期");
config.addHeaderAlias("androidLc", "安卓");
config.addHeaderAlias("iosLc", "iOS");
config.addHeaderAlias("androidAc", " 安卓");
config.addHeaderAlias("iosAc", " iOS");
config.setOnlyAlias(true);
// 设置合并的单元格
writer.merge(new CellRangeAddress(0, 1, 0, 0), "日期", true);

View File

@@ -57,8 +57,9 @@ public class IssueI66Z6BTest {
final ExcelWriter writer = ExcelUtil.getWriter(destFile);
//自定义标题别名
writer.addHeaderAlias("姓名", "name");
writer.addHeaderAlias("年龄", "age");
final ExcelWriteConfig config = writer.getConfig();
config.addHeaderAlias("姓名", "name");
config.addHeaderAlias("年龄", "age");
writer.write(dataList, true);
writer.close();