Search in sources :

Example 6 with Tr

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

the class Docx4j_合并单元格_S4_Test method mergeCellsHorizontal.

/**
 * @Description: 跨列合并
 */
public void mergeCellsHorizontal(Tbl tbl, int row, int fromCell, int toCell) {
    if (row < 0 || fromCell < 0 || toCell < 0) {
        return;
    }
    List<Tr> trList = getTblAllTr(tbl);
    if (row > trList.size()) {
        return;
    }
    Tr tr = trList.get(row);
    List<Tc> tcList = getTrAllCell(tr);
    for (int cellIndex = fromCell, len = Math.min(tcList.size() - 1, toCell); cellIndex <= len; cellIndex++) {
        Tc tc = tcList.get(cellIndex);
        TcPr tcPr = getTcPr(tc);
        HMerge hMerge = tcPr.getHMerge();
        if (hMerge == null) {
            hMerge = new HMerge();
            tcPr.setHMerge(hMerge);
        }
        if (cellIndex == fromCell) {
            hMerge.setVal("restart");
        } else {
            hMerge.setVal("continue");
        }
    }
}
Also used : TcPr(org.docx4j.wml.TcPr) HMerge(org.docx4j.wml.TcPrInner.HMerge) Tr(org.docx4j.wml.Tr) Tc(org.docx4j.wml.Tc)

Example 7 with Tr

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

the class Docx4j_工具类_S3_Test method mergeCellsHorizontal.

/**
 * @Description: 跨列合并
 */
public void mergeCellsHorizontal(Tbl tbl, int row, int fromCell, int toCell) {
    if (row < 0 || fromCell < 0 || toCell < 0) {
        return;
    }
    List<Tr> trList = getTblAllTr(tbl);
    if (row > trList.size()) {
        return;
    }
    Tr tr = trList.get(row);
    List<Tc> tcList = getTrAllCell(tr);
    for (int cellIndex = fromCell, len = Math.min(tcList.size() - 1, toCell); cellIndex <= len; cellIndex++) {
        Tc tc = tcList.get(cellIndex);
        TcPr tcPr = getTcPr(tc);
        HMerge hMerge = tcPr.getHMerge();
        if (hMerge == null) {
            hMerge = new HMerge();
            tcPr.setHMerge(hMerge);
        }
        if (cellIndex == fromCell) {
            hMerge.setVal("restart");
        } else {
            hMerge.setVal("continue");
        }
    }
}
Also used : TcPr(org.docx4j.wml.TcPr) HMerge(org.docx4j.wml.TcPrInner.HMerge) Tr(org.docx4j.wml.Tr) Tc(org.docx4j.wml.Tc)

Example 8 with Tr

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

the class Docx4j_工具类_S3_Test method mergeCellsHorizontalByGridSpan.

/*------------------------------------Word 表格相关---------------------------------------------------  */
/**
 * @Description: 跨列合并
 */
public void mergeCellsHorizontalByGridSpan(Tbl tbl, int row, int fromCell, int toCell) {
    if (row < 0 || fromCell < 0 || toCell < 0) {
        return;
    }
    List<Tr> trList = getTblAllTr(tbl);
    if (row > trList.size()) {
        return;
    }
    Tr tr = trList.get(row);
    List<Tc> tcList = getTrAllCell(tr);
    for (int cellIndex = Math.min(tcList.size() - 1, toCell); cellIndex >= fromCell; cellIndex--) {
        Tc tc = tcList.get(cellIndex);
        TcPr tcPr = getTcPr(tc);
        if (cellIndex == fromCell) {
            GridSpan gridSpan = tcPr.getGridSpan();
            if (gridSpan == null) {
                gridSpan = new GridSpan();
                tcPr.setGridSpan(gridSpan);
            }
            gridSpan.setVal(BigInteger.valueOf(Math.min(tcList.size() - 1, toCell) - fromCell + 1));
        } else {
            tr.getContent().remove(cellIndex);
        }
    }
}
Also used : TcPr(org.docx4j.wml.TcPr) Tr(org.docx4j.wml.Tr) Tc(org.docx4j.wml.Tc) GridSpan(org.docx4j.wml.TcPrInner.GridSpan)

Example 9 with Tr

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

the class Docx4j_替换模板 method getTblAllTr.

public static List<Tr> getTblAllTr(Tbl tbl) {
    List<Object> objList = getAllElementFromObject(tbl, Tr.class);
    List<Tr> trList = new ArrayList<Tr>();
    if (objList == null) {
        return trList;
    }
    for (Object obj : objList) {
        if (obj instanceof Tr) {
            Tr tr = (Tr) obj;
            trList.add(tr);
        }
    }
    return trList;
}
Also used : ArrayList(java.util.ArrayList) Tr(org.docx4j.wml.Tr)

Example 10 with Tr

use of org.docx4j.wml.Tr 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

Tr (org.docx4j.wml.Tr)39 Tbl (org.docx4j.wml.Tbl)23 Tc (org.docx4j.wml.Tc)17 P (org.docx4j.wml.P)10 TblPr (org.docx4j.wml.TblPr)7 TcPr (org.docx4j.wml.TcPr)7 File (java.io.File)6 R (org.docx4j.wml.R)6 RPr (org.docx4j.wml.RPr)6 ArrayList (java.util.ArrayList)5 STHint (org.docx4j.wml.STHint)5 BigInteger (java.math.BigInteger)4 WordprocessingMLPackage (org.docx4j.openpackaging.packages.WordprocessingMLPackage)4 MainDocumentPart (org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart)4 TblStyle (org.docx4j.wml.CTTblPrBase.TblStyle)4 TblWidth (org.docx4j.wml.TblWidth)4 Text (org.docx4j.wml.Text)4 ObjectFactory (org.docx4j.wml.ObjectFactory)3 TblGrid (org.docx4j.wml.TblGrid)3 TblGridCol (org.docx4j.wml.TblGridCol)3