-
Notifications
You must be signed in to change notification settings - Fork 1k
/
XWPFTemplateTest.java
117 lines (103 loc) · 5.12 KB
/
XWPFTemplateTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package com.deepoove.poi.tl;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.data.HyperLinkTextRenderData;
import com.deepoove.poi.data.MiniTableRenderData;
import com.deepoove.poi.data.NumbericRenderData;
import com.deepoove.poi.data.PictureRenderData;
import com.deepoove.poi.data.RowRenderData;
import com.deepoove.poi.data.TextRenderData;
import com.deepoove.poi.tl.source.MyDataModel;
/**
* @author Sayi
*/
public class XWPFTemplateTest {
RowRenderData header;
List<RowRenderData> tableDatas;
@Before
public void init() {
header = new RowRenderData(
Arrays.asList(new TextRenderData("FFFFFF", "Word处理解决方案"),
new TextRenderData("FFFFFF", "是否跨平台"), new TextRenderData("FFFFFF", "易用性")),
"ff9800");
RowRenderData row0 = RowRenderData.build("Poi-tl", "纯Java组件,跨平台", "简单:模板引擎功能,并对POI进行了一些封装");
RowRenderData row1 = RowRenderData.build("Apache Poi", "纯Java组件,跨平台", "简单,缺少一些功能的封装");
RowRenderData row2 = RowRenderData.build("Freemarker", "XML操作,跨平台", "复杂,需要理解XML结构");
RowRenderData row3 = RowRenderData.build("OpenOffice", "需要安装OpenOffice软件",
"复杂,需要了解OpenOffice的API");
RowRenderData row4 = RowRenderData.build("Jacob、winlib", "Windows平台", "复杂,不推荐使用");
tableDatas = Arrays.asList(row0, row1, row2, row3, row4);
}
@SuppressWarnings("serial")
@Test
public void testRenderMap() throws Exception {
Map<String, Object> datas = new HashMap<String, Object>() {
{
put("header", "Deeply love what you love.");
put("name", "Poi-tl");
put("word", "模板引擎");
put("time", "2019-05-31");
put("what",
"Java Word模板引擎: Minimal Microsoft word(docx) templating with {{template}} in Java. It works by expanding tags in a template using values provided in a JavaMap or JavaObject.");
put("author", new TextRenderData("000000", "Sayi卅一"));
put("introduce", new HyperLinkTextRenderData("http://www.deepoove.com", "http://www.deepoove.com"));
put("portrait", new PictureRenderData(60, 60, "src/test/resources/sayi.png"));
put("solution_compare", new MiniTableRenderData(header, tableDatas,
MiniTableRenderData.WIDTH_A4_FULL));
put("feature", new NumbericRenderData(new ArrayList<TextRenderData>() {
{
add(new TextRenderData("Plug-in grammar, add new grammar by yourself"));
add(new TextRenderData(
"Supports word text, local pictures, web pictures, table, list, header, footer..."));
add(new TextRenderData(
"Templates, not just templates, but also style templates"));
}
}));
}
};
XWPFTemplate template = XWPFTemplate.compile("src/test/resources/template.docx")
.render(datas);;
FileOutputStream out = new FileOutputStream("out_template.docx");
template.write(out);
out.flush();
out.close();
template.close();
}
@SuppressWarnings("serial")
@Test
public void testRenderObject() throws Exception {
MyDataModel obj = new MyDataModel();
obj.setHeader("Deeply love what you love.");
obj.setName("Poi-tl");
obj.setWord("模板引擎");
obj.setTime("2019-05-31");
obj.setWhat(
"Java Word模板引擎: Minimal Microsoft word(docx) templating with {{template}} in Java. It works by expanding tags in a template using values provided in a JavaMap or JavaObject.");
obj.setAuthor("Sayi卅一");
obj.setIntroduce("http://www.deepoove.com");
obj.setPortrait(new PictureRenderData(60, 60, "src/test/resources/sayi.png"));
obj.setSolutionCompare(new MiniTableRenderData(header, tableDatas));
obj.setFeature(new NumbericRenderData(new ArrayList<TextRenderData>() {
{
add(new TextRenderData("Plug-in grammar, add new grammar by yourself"));
add(new TextRenderData(
"Supports word text, local pictures, web pictures, table, list, header, footer..."));
add(new TextRenderData("Templates, not just templates, but also style templates"));
}
}));
XWPFTemplate template = XWPFTemplate.compile("src/test/resources/template.docx")
.render(obj);
FileOutputStream out = new FileOutputStream("out_template_object.docx");
template.write(out);
template.close();
out.flush();
out.close();
}
}