forked from SyncfusionExamples/Java-Word-Table-Examples
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDynamicTableUsingMailmerge.java
More file actions
137 lines (132 loc) · 4.46 KB
/
DynamicTableUsingMailmerge.java
File metadata and controls
137 lines (132 loc) · 4.46 KB
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
import java.io.File;
import com.syncfusion.docio.*;
import com.syncfusion.javahelper.system.collections.generic.ListSupport;
import com.syncfusion.javahelper.system.io.*;
import com.syncfusion.javahelper.system.xml.*;
public class DynamicTableUsingMailmerge {
public static void main(String[] args) throws Exception {
// Loads the template document.
WordDocument document = new WordDocument(getDataDir("Template.docx"), FormatType.Docx);
// Creates MailMergeDataTable.
MailMergeDataTable mailMergeDataTableStock = getMailMergeDataTableStock();
// Executes Mail Merge with group.
document.getMailMerge().executeGroup(mailMergeDataTableStock);
// Saves and closes the document.
document.save("Result.docx", FormatType.Docx);
document.close();
}
/**
*
* Gets the mail merge data table.
*
*/
private static MailMergeDataTable getMailMergeDataTableStock() throws Exception {
// Gets list of stock details.
ListSupport<StockDetails> stockDetails = new ListSupport<StockDetails>(StockDetails.class);
FileStreamSupport fs = new FileStreamSupport(getDataDir("StockDetails.xml"), FileMode.Open, FileAccess.Read);
// Reads the xml document.
XmlReaderSupport reader = XmlReaderSupport.create(fs);
if (reader == null)
throw new Exception("reader");
while (reader.getNodeType().getEnumValue() != XmlNodeType.Element.getEnumValue())
reader.read();
if (!(reader.getLocalName() == "StockMarket"))
throw new Exception("Unexpected xml tag " + reader.getLocalName());
reader.read();
while (reader.getNodeType().getEnumValue() == XmlNodeType.Whitespace.getEnumValue())
reader.read();
// Iterates to add the stock details in list.
while (!(reader.getLocalName() == "StockMarket"))
{
if (reader.getNodeType().getEnumValue() == XmlNodeType.Element.getEnumValue())
{
switch ((reader.getLocalName()) == null ? "string_null_value" : (reader.getLocalName()))
{
case "StockDetails":
stockDetails.add(getStockDetails(reader));
break;
}
}
else
{
reader.read();
if ((reader.getLocalName() == "StockMarket")
&& reader.getNodeType().getEnumValue() == XmlNodeType.EndElement.getEnumValue())
break;
}
}
// Creates an instance of MailMergeDataTable by specifying mail merge group name and IEnumerable collection.
MailMergeDataTable dataTable = new MailMergeDataTable("StockDetails", stockDetails);
reader.close();
fs.close();
return dataTable;
}
/**
*
* Gets the StockDetails.
*
* @param reader Syncfusion's XML reader to read the XML files.
*/
private static StockDetails getStockDetails(XmlReaderSupport reader) throws Exception {
if (reader == null)
throw new Exception("reader");
while (reader.getNodeType().getEnumValue() != XmlNodeType.Element.getEnumValue())
reader.read();
if (!(reader.getLocalName() == "StockDetails"))
throw new Exception("Unexpected xml tag " + reader.getLocalName());
reader.read();
while (reader.getNodeType().getEnumValue() == XmlNodeType.Whitespace.getEnumValue())
reader.read();
StockDetails stockDetails = new StockDetails();
while (!(reader.getLocalName() == "StockDetails"))
{
if (reader.getNodeType().getEnumValue() == XmlNodeType.Element.getEnumValue())
{
switch ((reader.getLocalName()) == null ? "string_null_value" : (reader.getLocalName()))
{
case "TradeNo":
stockDetails.setTradeNo(reader.readContentAsString());
break;
case "CompanyName":
stockDetails.setCompanyName(reader.readContentAsString());
break;
case "CostPrice":
stockDetails.setCostPrice(reader.readContentAsString());
break;
case "SharesCount":
stockDetails.setSharesCount(reader.readContentAsString());
break;
case "SalesPrice":
stockDetails.setSalesPrice(reader.readContentAsString());
break;
default:
reader.skip();
break;
}
}
else
{
reader.read();
if ((reader.getLocalName() == "StockDetails")
&& reader.getNodeType().getEnumValue() == XmlNodeType.EndElement.getEnumValue())
break;
}
}
return stockDetails;
}
/**
* Get the file path
*
* @param path specifies the file path
*/
private static String getDataDir(String path) {
File dir = new File(System.getProperty("user.dir"));
if (!(dir.toString().endsWith("Java-Word-Table-Examples")))
dir = dir.getParentFile();
dir = new File(dir, "resources");
dir = new File(dir, path);
if (dir.isDirectory() == false)
dir.mkdir();
return dir.toString();
}
}