clean history

This commit is contained in:
Looly
2019-08-14 10:02:32 +08:00
commit 6b011af032
1215 changed files with 159913 additions and 0 deletions

View File

@@ -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();
}
}

View File

@@ -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]);
}
}
}

View File

@@ -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 + "]";
}
}
}

View File

@@ -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));
}
}
};
}
}

View File

@@ -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"));
}
}

View File

@@ -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();
}
}

View File

@@ -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;
}
}

View File

@@ -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");
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.