feiyu02
2024-11-19 752e00503f672ddfe2066afb6c235721a3a912b5
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
package cn.flightfeather.supervision.docx4j.simpleDemo;
 
import org.docx4j.model.fields.merge.DataFieldName;
import org.docx4j.model.fields.merge.MailMerger.OutputField;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/**
 * Example of how to process mailing labels with MERGEFIELD / NEXT
 * 
 * See http://webapp.docx4java.org/OnlineDemo/ecma376/WordML/MERGEFIELD.html
 *
 */
public class FieldsMailMergeNext {
 
    public static void main(String[] args) throws Exception {
        
        
        WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(
                new java.io.File(
                        System.getProperty("user.dir") + "/template.docx"));
        
        List<Map<DataFieldName, String>> data = new ArrayList<Map<DataFieldName, String>>();
        
 
        // Instance 1
        Map<DataFieldName, String> map = new HashMap<DataFieldName, String>();
        map.put( new DataFieldName("Anrede"), "Daffy duck");
        map.put( new DataFieldName("Vorname"), "Plutext");
        data.add(map);
                
        // Instance 2
        map = new HashMap<DataFieldName, String>();
        map.put( new DataFieldName("Anrede"), "Jason");
        map.put(new DataFieldName("Vorname"), "Collins Street");
        data.add(map);        
        
 
        // How to treat the MERGEFIELD, in the output?
        org.docx4j.model.fields.merge.MailMerger.setMERGEFIELDInOutput(OutputField.REMOVED);
        
        org.docx4j.model.fields.merge.MailMergerWithNext.performLabelMerge(wordMLPackage, data);
        
        wordMLPackage.save(new java.io.File(
                System.getProperty("user.dir") + "/OUT_FieldsMailMerge.docx") );
            
        
    }
 
}