mirror of
https://gitee.com/dromara/hutool.git
synced 2025-12-05 03:17:49 +08:00
clean history
This commit is contained in:
@@ -0,0 +1,209 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package cn.hutool.poi.excel.test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.poi.ss.usermodel.CellStyle;
|
||||
import org.apache.poi.ss.usermodel.FillPatternType;
|
||||
import org.apache.poi.ss.usermodel.Font;
|
||||
import org.apache.poi.ss.usermodel.IndexedColors;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.poi.excel.BigExcelWriter;
|
||||
import cn.hutool.poi.excel.ExcelUtil;
|
||||
import cn.hutool.poi.excel.style.StyleUtil;
|
||||
|
||||
/**
|
||||
* 写出Excel单元测试
|
||||
*
|
||||
* @author looly
|
||||
*/
|
||||
public class BigExcelWriteTest {
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void writeTest2() {
|
||||
List<String> row = CollUtil.newArrayList("姓名", "加班日期", "下班时间", "加班时长", "餐补", "车补次数", "车补", "总计");
|
||||
BigExcelWriter overtimeWriter = ExcelUtil.getBigWriter("e:/excel/single_line.xlsx");
|
||||
overtimeWriter.write(row);
|
||||
overtimeWriter.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void writeTest() {
|
||||
List<?> row1 = CollUtil.newArrayList("aaaaa", "bb", "cc", "dd", DateUtil.date(), 3.22676575765);
|
||||
List<?> row2 = CollUtil.newArrayList("aa1", "bb1", "cc1", "dd1", DateUtil.date(), 250.7676);
|
||||
List<?> row3 = CollUtil.newArrayList("aa2", "bb2", "cc2", "dd2", DateUtil.date(), 0.111);
|
||||
List<?> row4 = CollUtil.newArrayList("aa3", "bb3", "cc3", "dd3", DateUtil.date(), 35);
|
||||
List<?> row5 = CollUtil.newArrayList("aa4", "bb4", "cc4", "dd4", DateUtil.date(), 28.00);
|
||||
|
||||
List<List<?>> rows = CollUtil.newArrayList(row1, row2, row3, row4, row5);
|
||||
for(int i=0; i < 400000; i++) {
|
||||
//超大列表写出测试
|
||||
rows.add(ObjectUtil.clone(row1));
|
||||
}
|
||||
|
||||
String filePath = "e:/bigWriteTest.xlsx";
|
||||
FileUtil.del(filePath);
|
||||
// 通过工具类创建writer
|
||||
BigExcelWriter writer = ExcelUtil.getBigWriter(filePath);
|
||||
|
||||
// // 跳过当前行,既第一行,非必须,在此演示用
|
||||
// writer.passCurrentRow();
|
||||
// // 合并单元格后的标题行,使用默认标题样式
|
||||
// writer.merge(row1.size() - 1, "大数据测试标题");
|
||||
// 一次性写出内容,使用默认样式
|
||||
writer.write(rows);
|
||||
// writer.autoSizeColumn(0, true);
|
||||
// 关闭writer,释放内存
|
||||
writer.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void mergeTest() {
|
||||
List<?> row1 = CollUtil.newArrayList("aa", "bb", "cc", "dd", DateUtil.date(), 3.22676575765);
|
||||
List<?> row2 = CollUtil.newArrayList("aa1", "bb1", "cc1", "dd1", DateUtil.date(), 250.7676);
|
||||
List<?> row3 = CollUtil.newArrayList("aa2", "bb2", "cc2", "dd2", DateUtil.date(), 0.111);
|
||||
List<?> row4 = CollUtil.newArrayList("aa3", "bb3", "cc3", "dd3", DateUtil.date(), 35);
|
||||
List<?> row5 = CollUtil.newArrayList("aa4", "bb4", "cc4", "dd4", DateUtil.date(), 28.00);
|
||||
|
||||
List<List<?>> rows = CollUtil.newArrayList(row1, row2, row3, row4, row5);
|
||||
|
||||
// 通过工具类创建writer
|
||||
BigExcelWriter writer = ExcelUtil.getBigWriter("e:/mergeTest.xlsx");
|
||||
CellStyle style = writer.getStyleSet().getHeadCellStyle();
|
||||
StyleUtil.setColor(style, IndexedColors.RED, FillPatternType.SOLID_FOREGROUND);
|
||||
|
||||
// 跳过当前行,既第一行,非必须,在此演示用
|
||||
writer.passCurrentRow();
|
||||
// 合并单元格后的标题行,使用默认标题样式
|
||||
writer.merge(row1.size() - 1, "测试标题");
|
||||
// 一次性写出内容,使用默认样式
|
||||
writer.write(rows);
|
||||
|
||||
// 合并单元格后的标题行,使用默认标题样式
|
||||
writer.merge(7, 10, 4, 10, "测试Merge", false);
|
||||
|
||||
// 关闭writer,释放内存
|
||||
writer.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void writeMapTest() {
|
||||
Map<String, Object> row1 = new LinkedHashMap<>();
|
||||
row1.put("姓名", "张三");
|
||||
row1.put("年龄", 23);
|
||||
row1.put("成绩", 88.32);
|
||||
row1.put("是否合格", true);
|
||||
row1.put("考试日期", DateUtil.date());
|
||||
|
||||
Map<String, Object> row2 = new LinkedHashMap<>();
|
||||
row2.put("姓名", "李四");
|
||||
row2.put("年龄", 33);
|
||||
row2.put("成绩", 59.50);
|
||||
row2.put("是否合格", false);
|
||||
row2.put("考试日期", DateUtil.date());
|
||||
|
||||
ArrayList<Map<String, Object>> rows = CollUtil.newArrayList(row1, row2);
|
||||
|
||||
// 通过工具类创建writer
|
||||
String path = "e:/bigWriteMapTest.xlsx";
|
||||
FileUtil.del(path);
|
||||
BigExcelWriter writer = ExcelUtil.getBigWriter(path);
|
||||
|
||||
//设置内容字体
|
||||
Font font = writer.createFont();
|
||||
font.setBold(true);
|
||||
font.setColor(Font.COLOR_RED);
|
||||
font.setItalic(true);
|
||||
writer.getStyleSet().setFont(font, true);
|
||||
|
||||
// 合并单元格后的标题行,使用默认标题样式
|
||||
writer.merge(row1.size() - 1, "一班成绩单");
|
||||
// 一次性写出内容,使用默认样式
|
||||
writer.write(rows);
|
||||
// 关闭writer,释放内存
|
||||
writer.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void writeMapTest2() {
|
||||
Map<String, Object> row1 = MapUtil.newHashMap(true);
|
||||
row1.put("姓名", "张三");
|
||||
row1.put("年龄", 23);
|
||||
row1.put("成绩", 88.32);
|
||||
row1.put("是否合格", true);
|
||||
row1.put("考试日期", DateUtil.date());
|
||||
|
||||
// 通过工具类创建writer
|
||||
String path = "e:/bigWriteMapTest2.xlsx";
|
||||
FileUtil.del(path);
|
||||
BigExcelWriter writer = ExcelUtil.getBigWriter(path);
|
||||
|
||||
// 一次性写出内容,使用默认样式
|
||||
writer.writeRow(row1, true);
|
||||
// 关闭writer,释放内存
|
||||
writer.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void writeBeanTest() {
|
||||
TestBean bean1 = new TestBean();
|
||||
bean1.setName("张三");
|
||||
bean1.setAge(22);
|
||||
bean1.setPass(true);
|
||||
bean1.setScore(66.30);
|
||||
bean1.setExamDate(DateUtil.date());
|
||||
|
||||
TestBean bean2 = new TestBean();
|
||||
bean2.setName("李四");
|
||||
bean2.setAge(28);
|
||||
bean2.setPass(false);
|
||||
bean2.setScore(38.50);
|
||||
bean2.setExamDate(DateUtil.date());
|
||||
|
||||
List<TestBean> rows = CollUtil.newArrayList(bean1, bean2);
|
||||
// 通过工具类创建writer
|
||||
String file = "e:/bigWriteBeanTest.xlsx";
|
||||
FileUtil.del(file);
|
||||
BigExcelWriter writer = ExcelUtil.getBigWriter(file);
|
||||
//自定义标题
|
||||
writer.addHeaderAlias("name", "姓名");
|
||||
writer.addHeaderAlias("age", "年龄");
|
||||
writer.addHeaderAlias("score", "分数");
|
||||
writer.addHeaderAlias("isPass", "是否通过");
|
||||
writer.addHeaderAlias("examDate", "考试时间");
|
||||
// 合并单元格后的标题行,使用默认标题样式
|
||||
writer.merge(4, "一班成绩单");
|
||||
// 一次性写出内容,使用默认样式
|
||||
writer.write(rows);
|
||||
// 关闭writer,释放内存
|
||||
writer.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void writeCellValueTest() {
|
||||
String path = "e:/cellValueTest.xlsx";
|
||||
FileUtil.del(path);
|
||||
BigExcelWriter writer = new BigExcelWriter(path);
|
||||
writer.writeCellValue(3, 5, "aaa");
|
||||
writer.close();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package cn.hutool.poi.excel.test;
|
||||
|
||||
import org.apache.poi.ss.usermodel.BuiltinFormats;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
import cn.hutool.core.lang.Console;
|
||||
|
||||
public class CellUtilTest {
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void isDateTest() {
|
||||
String[] all = BuiltinFormats.getAll();
|
||||
for(int i = 0 ; i < all.length; i++) {
|
||||
Console.log("{} {}", i, all[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,193 @@
|
||||
package cn.hutool.poi.excel.test;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
import cn.hutool.core.io.resource.ResourceUtil;
|
||||
import cn.hutool.core.lang.Console;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.poi.excel.ExcelReader;
|
||||
import cn.hutool.poi.excel.ExcelUtil;
|
||||
|
||||
/**
|
||||
* Excel读取单元测试
|
||||
*
|
||||
* @author Looly
|
||||
*
|
||||
*/
|
||||
public class ExcelReadTest {
|
||||
|
||||
@Test
|
||||
public void aliasTest() {
|
||||
ExcelReader reader = ExcelUtil.getReader(ResourceUtil.getStream("alias.xlsx"));
|
||||
|
||||
//读取单个单元格内容测试
|
||||
Object value = reader.readCellValue(1, 2);
|
||||
Assert.assertEquals("仓库", value);
|
||||
|
||||
Map<String, String> headerAlias = MapUtil.newHashMap();
|
||||
headerAlias.put("用户姓名", "userName");
|
||||
headerAlias.put("库房", "storageName");
|
||||
headerAlias.put("盘点权限", "checkPerm");
|
||||
headerAlias.put("领料审批权限", "allotAuditPerm");
|
||||
reader.setHeaderAlias(headerAlias);
|
||||
|
||||
// 读取list时默认首个非空行为标题
|
||||
List<List<Object>> read = reader.read();
|
||||
Assert.assertEquals("userName", read.get(0).get(0));
|
||||
Assert.assertEquals("storageName", read.get(0).get(1));
|
||||
Assert.assertEquals("checkPerm", read.get(0).get(2));
|
||||
Assert.assertEquals("allotAuditPerm", read.get(0).get(3));
|
||||
|
||||
List<Map<String, Object>> readAll = reader.readAll();
|
||||
for (Map<String, Object> map : readAll) {
|
||||
Assert.assertTrue(map.containsKey("userName"));
|
||||
Assert.assertTrue(map.containsKey("storageName"));
|
||||
Assert.assertTrue(map.containsKey("checkPerm"));
|
||||
Assert.assertTrue(map.containsKey("allotAuditPerm"));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void excelReadTestOfEmptyLine() {
|
||||
ExcelReader reader = ExcelUtil.getReader(ResourceUtil.getStream("priceIndex.xls"));
|
||||
List<Map<String, Object>> readAll = reader.readAll();
|
||||
|
||||
Assert.assertEquals(4, readAll.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void excelReadTest() {
|
||||
ExcelReader reader = ExcelUtil.getReader(ResourceUtil.getStream("aaa.xlsx"));
|
||||
List<List<Object>> readAll = reader.read();
|
||||
|
||||
// 标题
|
||||
Assert.assertEquals("姓名", readAll.get(0).get(0));
|
||||
Assert.assertEquals("性别", readAll.get(0).get(1));
|
||||
Assert.assertEquals("年龄", readAll.get(0).get(2));
|
||||
Assert.assertEquals("鞋码", readAll.get(0).get(3));
|
||||
|
||||
// 第一行
|
||||
Assert.assertEquals("张三", readAll.get(1).get(0));
|
||||
Assert.assertEquals("男", readAll.get(1).get(1));
|
||||
Assert.assertEquals(11L, readAll.get(1).get(2));
|
||||
Assert.assertEquals(41.5D, readAll.get(1).get(3));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void excelReadAsTextTest() {
|
||||
ExcelReader reader = ExcelUtil.getReader(ResourceUtil.getStream("aaa.xlsx"));
|
||||
Assert.assertNotNull(reader.readAsText(false));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void excel03ReadTest() {
|
||||
ExcelReader reader = ExcelUtil.getReader(ResourceUtil.getStream("aaa.xls"));
|
||||
List<List<Object>> readAll = reader.read();
|
||||
|
||||
// for (List<Object> list : readAll) {
|
||||
// Console.log(list);
|
||||
// }
|
||||
|
||||
// 标题
|
||||
Assert.assertEquals("姓名", readAll.get(0).get(0));
|
||||
Assert.assertEquals("性别", readAll.get(0).get(1));
|
||||
Assert.assertEquals("年龄", readAll.get(0).get(2));
|
||||
Assert.assertEquals("分数", readAll.get(0).get(3));
|
||||
|
||||
// 第一行
|
||||
Assert.assertEquals("张三", readAll.get(1).get(0));
|
||||
Assert.assertEquals("男", readAll.get(1).get(1));
|
||||
Assert.assertEquals(11L, readAll.get(1).get(2));
|
||||
Assert.assertEquals(33.2D, readAll.get(1).get(3));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void excel03ReadTest2() {
|
||||
ExcelReader reader = ExcelUtil.getReader(ResourceUtil.getStream("aaa.xls"), "校园入学");
|
||||
List<List<Object>> readAll = reader.read();
|
||||
|
||||
// 标题
|
||||
Assert.assertEquals("班级", readAll.get(0).get(0));
|
||||
Assert.assertEquals("年级", readAll.get(0).get(1));
|
||||
Assert.assertEquals("学校", readAll.get(0).get(2));
|
||||
Assert.assertEquals("入学时间", readAll.get(0).get(3));
|
||||
Assert.assertEquals("更新时间", readAll.get(0).get(4));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void excelReadToMapListTest() {
|
||||
ExcelReader reader = ExcelUtil.getReader(ResourceUtil.getStream("aaa.xlsx"));
|
||||
List<Map<String, Object>> readAll = reader.readAll();
|
||||
|
||||
Assert.assertEquals("张三", readAll.get(0).get("姓名"));
|
||||
Assert.assertEquals("男", readAll.get(0).get("性别"));
|
||||
Assert.assertEquals(11L, readAll.get(0).get("年龄"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void excelReadToBeanListTest() {
|
||||
ExcelReader reader = ExcelUtil.getReader(ResourceUtil.getStream("aaa.xlsx"));
|
||||
reader.addHeaderAlias("姓名", "name");
|
||||
reader.addHeaderAlias("年龄", "age");
|
||||
reader.addHeaderAlias("性别", "gender");
|
||||
|
||||
List<Person> all = reader.readAll(Person.class);
|
||||
Assert.assertEquals("张三", all.get(0).getName());
|
||||
Assert.assertEquals("男", all.get(0).getGender());
|
||||
Assert.assertEquals(Integer.valueOf(11), all.get(0).getAge());
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void excelReadToBeanListTest2() {
|
||||
ExcelReader reader = ExcelUtil.getReader("f:/test/toBean.xlsx");
|
||||
reader.addHeaderAlias("姓名", "name");
|
||||
reader.addHeaderAlias("年龄", "age");
|
||||
reader.addHeaderAlias("性别", "gender");
|
||||
|
||||
List<Person> all = reader.read(0,2, Person.class);
|
||||
for (Person person : all) {
|
||||
Console.log(person);
|
||||
}
|
||||
}
|
||||
|
||||
public static class Person {
|
||||
private String name;
|
||||
private String gender;
|
||||
private Integer age;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getGender() {
|
||||
return gender;
|
||||
}
|
||||
|
||||
public void setGender(String gender) {
|
||||
this.gender = gender;
|
||||
}
|
||||
|
||||
public Integer getAge() {
|
||||
return age;
|
||||
}
|
||||
|
||||
public void setAge(Integer age) {
|
||||
this.age = age;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Person [name=" + name + ", gender=" + gender + ", age=" + age + "]";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
package cn.hutool.poi.excel.test;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.lang.Console;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.poi.excel.ExcelUtil;
|
||||
import cn.hutool.poi.excel.sax.Excel03SaxReader;
|
||||
import cn.hutool.poi.excel.sax.handler.RowHandler;
|
||||
|
||||
/**
|
||||
* Excel sax方式读取
|
||||
*
|
||||
* @author looly
|
||||
*
|
||||
*/
|
||||
public class ExcelSaxReadTest {
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void readBlankLineTest() {
|
||||
ExcelUtil.readBySax("e:/ExcelBlankLine.xlsx", 0, new RowHandler() {
|
||||
|
||||
@Override
|
||||
public void handle(int sheetIndex, int rowIndex, List<Object> rowList) {
|
||||
if (StrUtil.isAllEmpty(Convert.toStrArray(rowList))) {
|
||||
return;
|
||||
}
|
||||
Console.log(rowList);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void readBySaxTest() {
|
||||
ExcelUtil.readBySax("blankAndDateTest.xlsx", 0, createRowHandler());
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void readBySaxTest2() {
|
||||
ExcelUtil.readBySax("e:/B23_20180404164901240.xlsx", 2, new RowHandler() {
|
||||
@Override
|
||||
public void handle(int sheetIndex, int rowIndex, List<Object> rowList) {
|
||||
Console.log(rowList);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void readBySaxTest3() {
|
||||
ExcelUtil.readBySax("e:/excel/writeMapTest.xlsx", 0, new RowHandler() {
|
||||
|
||||
@Override
|
||||
public void handle(int sheetIndex, int rowIndex, List<Object> rowList) {
|
||||
Console.log(rowList);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void excel07Test() {
|
||||
// 工具化快速读取
|
||||
ExcelUtil.read07BySax("aaa.xlsx", 0, createRowHandler());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void excel03Test() {
|
||||
Excel03SaxReader reader = new Excel03SaxReader(createRowHandler());
|
||||
reader.read("aaa.xls", 1);
|
||||
// Console.log("Sheet index: [{}], Sheet name: [{}]", reader.getSheetIndex(), reader.getSheetName());
|
||||
ExcelUtil.read03BySax("aaa.xls", 1, createRowHandler());
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void readBySaxTest4() {
|
||||
ExcelUtil.readBySax("e:/excel/single_line.xlsx", 2, createRowHandler());
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void readBySaxTest5() {
|
||||
ExcelUtil.readBySax("f:\\test\\222.xlsx", 0, createRowHandler());
|
||||
}
|
||||
|
||||
private RowHandler createRowHandler() {
|
||||
return new RowHandler() {
|
||||
|
||||
@Override
|
||||
public void handle(int sheetIndex, int rowIndex, List<Object> rowlist) {
|
||||
// Console.log("[{}] [{}] {}", sheetIndex, rowIndex, rowlist);
|
||||
if (5 != rowIndex && 6 != rowIndex) {
|
||||
// 测试样例中除第五行、第六行都为非空行
|
||||
Assert.assertTrue(CollUtil.isNotEmpty(rowlist));
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package cn.hutool.poi.excel.test;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import cn.hutool.poi.excel.ExcelUtil;
|
||||
|
||||
public class ExcelUtilTest {
|
||||
|
||||
@Test
|
||||
public void indexToColNameTest() {
|
||||
Assert.assertEquals("A", ExcelUtil.indexToColName(0));
|
||||
Assert.assertEquals("B", ExcelUtil.indexToColName(1));
|
||||
Assert.assertEquals("C", ExcelUtil.indexToColName(2));
|
||||
|
||||
Assert.assertEquals("AA", ExcelUtil.indexToColName(26));
|
||||
Assert.assertEquals("AB", ExcelUtil.indexToColName(27));
|
||||
Assert.assertEquals("AC", ExcelUtil.indexToColName(28));
|
||||
|
||||
Assert.assertEquals("AAA", ExcelUtil.indexToColName(702));
|
||||
Assert.assertEquals("AAB", ExcelUtil.indexToColName(703));
|
||||
Assert.assertEquals("AAC", ExcelUtil.indexToColName(704));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void colNameToIndexTest() {
|
||||
Assert.assertEquals(704, ExcelUtil.colNameToIndex("AAC"));
|
||||
Assert.assertEquals(703, ExcelUtil.colNameToIndex("AAB"));
|
||||
Assert.assertEquals(702, ExcelUtil.colNameToIndex("AAA"));
|
||||
|
||||
Assert.assertEquals(28, ExcelUtil.colNameToIndex("AC"));
|
||||
Assert.assertEquals(27, ExcelUtil.colNameToIndex("AB"));
|
||||
Assert.assertEquals(26, ExcelUtil.colNameToIndex("AA"));
|
||||
|
||||
Assert.assertEquals(2, ExcelUtil.colNameToIndex("C"));
|
||||
Assert.assertEquals(1, ExcelUtil.colNameToIndex("B"));
|
||||
Assert.assertEquals(0, ExcelUtil.colNameToIndex("A"));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,368 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package cn.hutool.poi.excel.test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.poi.ss.usermodel.CellStyle;
|
||||
import org.apache.poi.ss.usermodel.FillPatternType;
|
||||
import org.apache.poi.ss.usermodel.Font;
|
||||
import org.apache.poi.ss.usermodel.IndexedColors;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.poi.excel.ExcelUtil;
|
||||
import cn.hutool.poi.excel.ExcelWriter;
|
||||
import cn.hutool.poi.excel.style.StyleUtil;
|
||||
|
||||
/**
|
||||
* 写出Excel单元测试
|
||||
*
|
||||
* @author looly
|
||||
*/
|
||||
public class ExcelWriteTest {
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void writeTest2() {
|
||||
List<String> row = CollUtil.newArrayList("姓名", "加班日期", "下班时间", "加班时长", "餐补", "车补次数", "车补", "总计");
|
||||
ExcelWriter overtimeWriter = ExcelUtil.getWriter("e:/excel/single_line.xlsx");
|
||||
overtimeWriter.writeRow(row);
|
||||
overtimeWriter.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void writeWithSheetTest() {
|
||||
ExcelWriter writer = ExcelUtil.getWriterWithSheet("表格1");
|
||||
|
||||
// 写出第一张表
|
||||
List<String> row = CollUtil.newArrayList("姓名", "加班日期", "下班时间", "加班时长", "餐补", "车补次数", "车补", "总计");
|
||||
writer.writeRow(row);
|
||||
|
||||
// 写出第二张表
|
||||
writer.setSheet("表格2");
|
||||
List<String> row2 = CollUtil.newArrayList("姓名2", "加班日期2", "下班时间2", "加班时长2", "餐补2", "车补次数2", "车补2", "总计2");
|
||||
writer.writeRow(row2);
|
||||
|
||||
// 生成文件或导出Excel
|
||||
writer.flush(FileUtil.file("f:/test/writeWithSheetTest.xlsx"));
|
||||
|
||||
writer.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void writeTest() {
|
||||
List<?> row1 = CollUtil.newArrayList("aaaaa", "bb", "cc", "dd", DateUtil.date(), 3.22676575765);
|
||||
List<?> row2 = CollUtil.newArrayList("aa1", "bb1", "cc1", "dd1", DateUtil.date(), 250.7676);
|
||||
List<?> row3 = CollUtil.newArrayList("aa2", "bb2", "cc2", "dd2", DateUtil.date(), 0.111);
|
||||
List<?> row4 = CollUtil.newArrayList("aa3", "bb3", "cc3", "dd3", DateUtil.date(), 35);
|
||||
List<?> row5 = CollUtil.newArrayList("aa4", "bb4", "cc4", "dd4", DateUtil.date(), 28.00);
|
||||
|
||||
List<List<?>> rows = CollUtil.newArrayList(row1, row2, row3, row4, row5);
|
||||
for (int i = 0; i < 400; i++) {
|
||||
// 超大列表写出测试
|
||||
rows.add(ObjectUtil.clone(row1));
|
||||
}
|
||||
|
||||
String filePath = "e:/writeTest.xlsx";
|
||||
FileUtil.del(filePath);
|
||||
// 通过工具类创建writer
|
||||
ExcelWriter writer = ExcelUtil.getWriter(filePath);
|
||||
// 通过构造方法创建writer
|
||||
// ExcelWriter writer = new ExcelWriter("d:/writeTest.xls");
|
||||
|
||||
// 跳过当前行,既第一行,非必须,在此演示用
|
||||
writer.passCurrentRow();
|
||||
// 合并单元格后的标题行,使用默认标题样式
|
||||
writer.merge(row1.size() - 1, "测试标题");
|
||||
// 一次性写出内容,使用默认样式
|
||||
writer.write(rows);
|
||||
writer.autoSizeColumn(0, true);
|
||||
// 关闭writer,释放内存
|
||||
writer.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void mergeTest() {
|
||||
List<?> row1 = CollUtil.newArrayList("aa", "bb", "cc", "dd", DateUtil.date(), 3.22676575765);
|
||||
List<?> row2 = CollUtil.newArrayList("aa1", "bb1", "cc1", "dd1", DateUtil.date(), 250.7676);
|
||||
List<?> row3 = CollUtil.newArrayList("aa2", "bb2", "cc2", "dd2", DateUtil.date(), 0.111);
|
||||
List<?> row4 = CollUtil.newArrayList("aa3", "bb3", "cc3", "dd3", DateUtil.date(), 35);
|
||||
List<?> row5 = CollUtil.newArrayList("aa4", "bb4", "cc4", "dd4", DateUtil.date(), 28.00);
|
||||
|
||||
List<List<?>> rows = CollUtil.newArrayList(row1, row2, row3, row4, row5);
|
||||
|
||||
// 通过工具类创建writer
|
||||
ExcelWriter writer = ExcelUtil.getWriter("e:/mergeTest.xlsx");
|
||||
CellStyle style = writer.getStyleSet().getHeadCellStyle();
|
||||
StyleUtil.setColor(style, IndexedColors.RED, FillPatternType.SOLID_FOREGROUND);
|
||||
|
||||
// 跳过当前行,既第一行,非必须,在此演示用
|
||||
writer.passCurrentRow();
|
||||
// 合并单元格后的标题行,使用默认标题样式
|
||||
writer.merge(row1.size() - 1, "测试标题");
|
||||
// 一次性写出内容,使用默认样式
|
||||
writer.write(rows);
|
||||
|
||||
// 合并单元格后的标题行,使用默认标题样式
|
||||
writer.merge(7, 10, 4, 10, "测试Merge", false);
|
||||
|
||||
// 关闭writer,释放内存
|
||||
writer.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void mergeTest2() {
|
||||
Map<String, Object> row1 = new LinkedHashMap<>();
|
||||
row1.put("姓名", "张三");
|
||||
row1.put("年龄", 23);
|
||||
row1.put("成绩", 88.32);
|
||||
row1.put("是否合格", true);
|
||||
row1.put("考试日期", DateUtil.date());
|
||||
|
||||
Map<String, Object> row2 = new LinkedHashMap<>();
|
||||
row2.put("姓名", "李四");
|
||||
row2.put("年龄", 33);
|
||||
row2.put("成绩", 59.50);
|
||||
row2.put("是否合格", false);
|
||||
row2.put("考试日期", DateUtil.date());
|
||||
|
||||
ArrayList<Map<String, Object>> rows = CollUtil.newArrayList(row1, row2);
|
||||
|
||||
// 通过工具类创建writer
|
||||
ExcelWriter writer = ExcelUtil.getWriter("e:/writeMapTest.xlsx");
|
||||
// 合并单元格后的标题行,使用默认标题样式
|
||||
try {
|
||||
writer.merge(row1.size() - 1, "一班成绩单");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// 一次性写出内容,使用默认样式,强制输出标题
|
||||
writer.write(rows, true);
|
||||
// 关闭writer,释放内存
|
||||
writer.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void writeMapTest() {
|
||||
Map<String, Object> row1 = new LinkedHashMap<>();
|
||||
row1.put("姓名", "张三");
|
||||
row1.put("年龄", 23);
|
||||
row1.put("成绩", 88.32);
|
||||
row1.put("是否合格", true);
|
||||
row1.put("考试日期", DateUtil.date());
|
||||
|
||||
Map<String, Object> row2 = new LinkedHashMap<>();
|
||||
row2.put("姓名", "李四");
|
||||
row2.put("年龄", 33);
|
||||
row2.put("成绩", 59.50);
|
||||
row2.put("是否合格", false);
|
||||
row2.put("考试日期", DateUtil.date());
|
||||
|
||||
ArrayList<Map<String, Object>> rows = CollUtil.newArrayList(row1, row2);
|
||||
|
||||
// 通过工具类创建writer
|
||||
ExcelWriter writer = ExcelUtil.getWriter("e:/excel/writeMapTest.xlsx");
|
||||
|
||||
// 设置内容字体
|
||||
Font font = writer.createFont();
|
||||
font.setBold(true);
|
||||
font.setColor(Font.COLOR_RED);
|
||||
font.setItalic(true);
|
||||
writer.getStyleSet().setFont(font, true);
|
||||
|
||||
// 合并单元格后的标题行,使用默认标题样式
|
||||
writer.merge(row1.size() - 1, "一班成绩单");
|
||||
// 一次性写出内容,使用默认样式
|
||||
writer.write(rows, true);
|
||||
// 关闭writer,释放内存
|
||||
writer.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void writeMapTest2() {
|
||||
Map<String, Object> row1 = MapUtil.newHashMap(true);
|
||||
row1.put("姓名", "张三");
|
||||
row1.put("年龄", 23);
|
||||
row1.put("成绩", 88.32);
|
||||
row1.put("是否合格", true);
|
||||
row1.put("考试日期", DateUtil.date());
|
||||
|
||||
// 通过工具类创建writer
|
||||
ExcelWriter writer = ExcelUtil.getWriter("e:/writeMapTest2.xlsx");
|
||||
|
||||
// 一次性写出内容,使用默认样式
|
||||
writer.writeRow(row1, true);
|
||||
// 关闭writer,释放内存
|
||||
writer.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void writeMapAliasTest() {
|
||||
Map<Object, Object> row1 = new LinkedHashMap<>();
|
||||
row1.put("name", "张三");
|
||||
row1.put("age", 22);
|
||||
row1.put("isPass", true);
|
||||
row1.put("score", 66.30);
|
||||
row1.put("examDate", DateUtil.date());
|
||||
Map<Object, Object> row2 = new LinkedHashMap<>();
|
||||
row2.put("name", "李四");
|
||||
row2.put("age", 233);
|
||||
row2.put("isPass", false);
|
||||
row2.put("score", 32.30);
|
||||
row2.put("examDate", DateUtil.date());
|
||||
|
||||
List<Map<Object, Object>> rows = CollUtil.newArrayList(row1, row2);
|
||||
// 通过工具类创建writer
|
||||
String file = "e:/writeMapAlias.xlsx";
|
||||
FileUtil.del(file);
|
||||
ExcelWriter writer = ExcelUtil.getWriter(file);
|
||||
// 自定义标题
|
||||
writer.addHeaderAlias("name", "姓名");
|
||||
writer.addHeaderAlias("age", "年龄");
|
||||
writer.addHeaderAlias("score", "分数");
|
||||
writer.addHeaderAlias("isPass", "是否通过");
|
||||
writer.addHeaderAlias("examDate", "考试时间");
|
||||
// 合并单元格后的标题行,使用默认标题样式
|
||||
writer.merge(4, "一班成绩单");
|
||||
// 一次性写出内容,使用默认样式
|
||||
writer.write(rows, true);
|
||||
// 关闭writer,释放内存
|
||||
writer.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void writeMapOnlyAliasTest() {
|
||||
Map<Object, Object> row1 = new LinkedHashMap<>();
|
||||
row1.put("name", "张三");
|
||||
row1.put("age", 22);
|
||||
row1.put("isPass", true);
|
||||
row1.put("score", 66.30);
|
||||
row1.put("examDate", DateUtil.date());
|
||||
Map<Object, Object> row2 = new LinkedHashMap<>();
|
||||
row2.put("name", "李四");
|
||||
row2.put("age", 233);
|
||||
row2.put("isPass", false);
|
||||
row2.put("score", 32.30);
|
||||
row2.put("examDate", DateUtil.date());
|
||||
|
||||
List<Map<Object, Object>> rows = CollUtil.newArrayList(row1, row2);
|
||||
// 通过工具类创建writer
|
||||
String file = "f:/test/test_alias.xlsx";
|
||||
FileUtil.del(file);
|
||||
ExcelWriter writer = ExcelUtil.getWriter(file);
|
||||
writer.setOnlyAlias(true);
|
||||
// 自定义标题
|
||||
writer.addHeaderAlias("name", "姓名");
|
||||
writer.addHeaderAlias("age", "年龄");
|
||||
// 合并单元格后的标题行,使用默认标题样式
|
||||
writer.merge(4, "一班成绩单");
|
||||
// 一次性写出内容,使用默认样式
|
||||
writer.write(rows, true);
|
||||
// 关闭writer,释放内存
|
||||
writer.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
// @Ignore
|
||||
public void writeMapOnlyAliasTest2() {
|
||||
Map<Object, Object> row1 = new LinkedHashMap<>();
|
||||
row1.put("name", "张三");
|
||||
row1.put("age", 22);
|
||||
row1.put("isPass", true);
|
||||
row1.put("score", 66.30);
|
||||
row1.put("examDate", DateUtil.date());
|
||||
Map<Object, Object> row2 = new LinkedHashMap<>();
|
||||
row2.put("name", "李四");
|
||||
row2.put("age", 233);
|
||||
row2.put("isPass", false);
|
||||
row2.put("score", 32.30);
|
||||
row2.put("examDate", DateUtil.date());
|
||||
|
||||
List<Map<Object, Object>> rows = CollUtil.newArrayList(row1, row2);
|
||||
// 通过工具类创建writer
|
||||
String file = "f:/test/test_alias.xls";
|
||||
ExcelWriter writer = ExcelUtil.getWriter(file, "test1");
|
||||
// writer.setOnlyAlias(true);
|
||||
// 自定义标题
|
||||
writer.addHeaderAlias("name", "姓名");
|
||||
writer.addHeaderAlias("age", "年龄");
|
||||
// 一次性写出内容,使用默认样式
|
||||
writer.write(rows, true);
|
||||
// 关闭writer,释放内存
|
||||
writer.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void writeBeanTest() {
|
||||
TestBean bean1 = new TestBean();
|
||||
bean1.setName("张三");
|
||||
bean1.setAge(22);
|
||||
bean1.setPass(true);
|
||||
bean1.setScore(66.30);
|
||||
bean1.setExamDate(DateUtil.date());
|
||||
|
||||
TestBean bean2 = new TestBean();
|
||||
bean2.setName("李四");
|
||||
bean2.setAge(28);
|
||||
bean2.setPass(false);
|
||||
bean2.setScore(38.50);
|
||||
bean2.setExamDate(DateUtil.date());
|
||||
|
||||
List<TestBean> rows = CollUtil.newArrayList(bean1, bean2);
|
||||
// 通过工具类创建writer
|
||||
String file = "e:/writeBeanTest.xlsx";
|
||||
FileUtil.del(file);
|
||||
ExcelWriter writer = ExcelUtil.getWriter(file);
|
||||
// 自定义标题
|
||||
writer.addHeaderAlias("name", "姓名");
|
||||
writer.addHeaderAlias("age", "年龄");
|
||||
writer.addHeaderAlias("score", "分数");
|
||||
writer.addHeaderAlias("isPass", "是否通过");
|
||||
writer.addHeaderAlias("examDate", "考试时间");
|
||||
// 合并单元格后的标题行,使用默认标题样式
|
||||
writer.merge(4, "一班成绩单");
|
||||
// 一次性写出内容,使用默认样式
|
||||
writer.write(rows, true);
|
||||
// 关闭writer,释放内存
|
||||
writer.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void writeCellValueTest() {
|
||||
ExcelWriter writer = new ExcelWriter("d:/cellValueTest.xls");
|
||||
writer.writeCellValue(3, 5, "aaa");
|
||||
writer.writeCellValue(3, 5, "aaa");
|
||||
writer.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void addSelectTest() {
|
||||
List<String> row = CollUtil.newArrayList("姓名", "加班日期", "下班时间", "加班时长", "餐补", "车补次数", "车补", "总计");
|
||||
ExcelWriter overtimeWriter = ExcelUtil.getWriter("f:/excel/single_line.xlsx");
|
||||
overtimeWriter.writeCellValue(3, 4, "AAAA");
|
||||
overtimeWriter.addSelect(3, 4, row.toArray(new String[row.size()]));
|
||||
overtimeWriter.close();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package cn.hutool.poi.excel.test;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class TestBean {
|
||||
private String name;
|
||||
private int age;
|
||||
private double score;
|
||||
private boolean isPass;
|
||||
private Date examDate;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public int getAge() {
|
||||
return age;
|
||||
}
|
||||
|
||||
public void setAge(int age) {
|
||||
this.age = age;
|
||||
}
|
||||
|
||||
public double getScore() {
|
||||
return score;
|
||||
}
|
||||
|
||||
public void setScore(double score) {
|
||||
this.score = score;
|
||||
}
|
||||
|
||||
public boolean isPass() {
|
||||
return isPass;
|
||||
}
|
||||
|
||||
public void setPass(boolean isPass) {
|
||||
this.isPass = isPass;
|
||||
}
|
||||
|
||||
public Date getExamDate() {
|
||||
return examDate;
|
||||
}
|
||||
|
||||
public void setExamDate(Date examDate) {
|
||||
this.examDate = examDate;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package cn.hutool.poi.word.test;
|
||||
|
||||
import java.awt.Font;
|
||||
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.lang.Console;
|
||||
import cn.hutool.poi.word.Word07Writer;
|
||||
|
||||
public class WordWriterTest {
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void writeTest() {
|
||||
Word07Writer writer = new Word07Writer();
|
||||
writer.addText(new Font("方正小标宋简体", Font.PLAIN, 22), "我是第一部分", "我是第二部分");
|
||||
writer.addText(new Font("宋体", Font.PLAIN, 22), "我是正文第一部分", "我是正文第二部分");
|
||||
writer.flush(FileUtil.file("e:/wordWrite.docx"));
|
||||
writer.close();
|
||||
Console.log("OK");
|
||||
}
|
||||
}
|
||||
BIN
hutool-poi/src/test/resources/aaa.xls
Normal file
BIN
hutool-poi/src/test/resources/aaa.xls
Normal file
Binary file not shown.
BIN
hutool-poi/src/test/resources/aaa.xlsx
Normal file
BIN
hutool-poi/src/test/resources/aaa.xlsx
Normal file
Binary file not shown.
BIN
hutool-poi/src/test/resources/alias.xlsx
Normal file
BIN
hutool-poi/src/test/resources/alias.xlsx
Normal file
Binary file not shown.
BIN
hutool-poi/src/test/resources/blankAndDateTest.xlsx
Normal file
BIN
hutool-poi/src/test/resources/blankAndDateTest.xlsx
Normal file
Binary file not shown.
BIN
hutool-poi/src/test/resources/priceIndex.xls
Normal file
BIN
hutool-poi/src/test/resources/priceIndex.xls
Normal file
Binary file not shown.
Reference in New Issue
Block a user