Search in sources :

Example 1 with MyTblFinder

use of org.docx4j.template.wml.MyTblFinder in project docx4j-template by vindell.

the class Docx4j_替换模板 method replaceTemplateDocx.

public void replaceTemplateDocx() throws Exception {
    WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new java.io.File(inputfilepath));
    MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();
    HashMap<String, String> staticMap = getStaticData();
    // 替换普通变量
    documentPart.variableReplace(staticMap);
    Document document = (Document) documentPart.getContents();
    Body body = document.getBody();
    MyTblFinder tblFinder = new MyTblFinder();
    new TraversalUtil(body, tblFinder);
    // 替换表格模板第三行数据
    Tbl firstTbl = tblFinder.getTbls().get(0);
    List<Object> trObjList = firstTbl.getContent();
    Tr tr = (Tr) trObjList.get(2);
    replaceTrTotalData(tr, getTotalData());
    int lvlIndex = 3;
    // 替换表格模板第四行数据
    int lvlTotalSize = 4;
    tr = (Tr) trObjList.get(lvlIndex);
    List<String[]> lvDataList = getLvDataList(lvlTotalSize);
    replaceTrData(firstTbl, tr, lvDataList, lvlIndex);
    // 重新获取表格数据
    trObjList = firstTbl.getContent();
    int sexTotalSize = 2;
    // 替换表格模板第五行数据
    tr = (Tr) trObjList.get(lvlIndex + lvlTotalSize);
    List<String[]> sexDataList = getSexDataList(2);
    replaceTrSexData(tr, sexDataList.get(0));
    // 替换表格模板第六行数据
    tr = (Tr) trObjList.get(4 + lvlTotalSize);
    replaceTrSexData(tr, sexDataList.get(1));
    // 替换表格模板第七行数据
    tr = (Tr) trObjList.get(5 + lvlTotalSize);
    int nationTotalSize = 56;
    List<String[]> nationDataList = getNationDataList(nationTotalSize);
    replaceTrData(firstTbl, tr, nationDataList, lvlIndex + lvlTotalSize + sexTotalSize);
    // 合并层次单元格 层次位于第3行
    mergeCellsVertically(firstTbl, 0, lvlIndex, lvlIndex + lvlTotalSize - 1);
    // 合并民族单元格 层次+性别2行
    mergeCellsVertically(firstTbl, 0, lvlIndex + lvlTotalSize + sexTotalSize, lvlIndex + lvlTotalSize + sexTotalSize + nationTotalSize - 1);
    // 替换图表数据
    String[] chartArr = getChartData();
    replacePieChartData(wordMLPackage, chartArr);
    // 保存结果
    saveWordPackage(wordMLPackage, outputfilepath);
}
Also used : MainDocumentPart(org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart) WordprocessingMLPackage(org.docx4j.openpackaging.packages.WordprocessingMLPackage) Document(org.docx4j.wml.Document) File(java.io.File) TraversalUtil(org.docx4j.TraversalUtil) MyTblFinder(org.docx4j.template.wml.MyTblFinder) Body(org.docx4j.wml.Body) Tr(org.docx4j.wml.Tr) Tbl(org.docx4j.wml.Tbl)

Aggregations

File (java.io.File)1 TraversalUtil (org.docx4j.TraversalUtil)1 WordprocessingMLPackage (org.docx4j.openpackaging.packages.WordprocessingMLPackage)1 MainDocumentPart (org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart)1 MyTblFinder (org.docx4j.template.wml.MyTblFinder)1 Body (org.docx4j.wml.Body)1 Document (org.docx4j.wml.Document)1 Tbl (org.docx4j.wml.Tbl)1 Tr (org.docx4j.wml.Tr)1