Search in sources :

Example 21 with TblPr

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

the class Docx4jStyle_S3 method createTableWithContent.

public Tbl createTableWithContent(WordprocessingMLPackage wordMLPackage, ObjectFactory factory, String imgFilePath) throws Exception {
    Tbl table = factory.createTbl();
    // for TEST: this adds borders to all cells
    TblPr tblPr = new TblPr();
    TblStyle tblStyle = new TblStyle();
    tblStyle.setVal("TableGrid");
    tblPr.setTblStyle(tblStyle);
    table.setTblPr(tblPr);
    Tr tableRow = factory.createTr();
    // a default table cell style
    Docx4jStyle_S3 defStyle = new Docx4jStyle_S3();
    defStyle.setBold(false);
    defStyle.setItalic(false);
    defStyle.setUnderline(false);
    defStyle.setHorizAlignment(JcEnumeration.CENTER);
    // a specific table cell style
    Docx4jStyle_S3 style = new Docx4jStyle_S3();
    style.setBold(true);
    style.setItalic(true);
    style.setUnderline(true);
    style.setFontSize("40");
    style.setFontColor("FF0000");
    style.setCnFontFamily("微软雅黑");
    style.setEnFontFamily("Times New Roman");
    style.setTop(300);
    style.setBackground("CCFFCC");
    style.setVerticalAlignment(STVerticalJc.CENTER);
    style.setHorizAlignment(JcEnumeration.CENTER);
    style.setBorderTop(true);
    style.setBorderBottom(true);
    style.setNoWrap(true);
    addTableCell(factory, tableRow, "测试Field 1", 3500, style, 1, null);
    // start vertical merge for Filed 2 and Field 3 on 3 rows
    addTableCell(factory, tableRow, "测试Field 2", 3500, defStyle, 1, "restart");
    addTableCell(factory, tableRow, "测试Field 3", 1500, defStyle, 1, "restart");
    table.getContent().add(tableRow);
    tableRow = factory.createTr();
    addTableCell(factory, tableRow, "Text", 3500, defStyle, 1, null);
    addTableCell(factory, tableRow, "", 3500, defStyle, 1, "");
    addTableCell(factory, tableRow, "", 1500, defStyle, 1, "");
    table.getContent().add(tableRow);
    tableRow = factory.createTr();
    addTableCell(factory, tableRow, "Interval", 3500, defStyle, 1, null);
    addTableCell(factory, tableRow, "", 3500, defStyle, 1, "close");
    addTableCell(factory, tableRow, "", 1500, defStyle, 1, "close");
    table.getContent().add(tableRow);
    // add an image horizontally merged on 3 cells
    String filenameHint = null;
    String altText = null;
    int id1 = 0;
    int id2 = 1;
    byte[] bytes = getImageBytes(imgFilePath);
    P pImage;
    try {
        pImage = newImage(wordMLPackage, factory, bytes, filenameHint, altText, id1, id2, 8500);
        tableRow = factory.createTr();
        addTableCell(factory, tableRow, pImage, 8500, defStyle, 3, null);
        table.getContent().add(tableRow);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return table;
}
Also used : P(org.docx4j.wml.P) TblStyle(org.docx4j.wml.CTTblPrBase.TblStyle) TblPr(org.docx4j.wml.TblPr) Tr(org.docx4j.wml.Tr) Tbl(org.docx4j.wml.Tbl)

Example 22 with TblPr

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

the class Docx4j_工具类_S3_Test method setTableCellMargin.

/**
 * @Description: 设置单元格Margin
 */
public void setTableCellMargin(Tbl tbl, String top, String right, String bottom, String left) {
    TblPr tblPr = getTblPr(tbl);
    CTTblCellMar cellMar = tblPr.getTblCellMar();
    if (cellMar == null) {
        cellMar = new CTTblCellMar();
        tblPr.setTblCellMar(cellMar);
    }
    if (StringUtils.isNotBlank(top)) {
        TblWidth topW = new TblWidth();
        topW.setW(new BigInteger(top));
        topW.setType("dxa");
        cellMar.setTop(topW);
    }
    if (StringUtils.isNotBlank(right)) {
        TblWidth rightW = new TblWidth();
        rightW.setW(new BigInteger(right));
        rightW.setType("dxa");
        cellMar.setRight(rightW);
    }
    if (StringUtils.isNotBlank(bottom)) {
        TblWidth btW = new TblWidth();
        btW.setW(new BigInteger(bottom));
        btW.setType("dxa");
        cellMar.setBottom(btW);
    }
    if (StringUtils.isNotBlank(left)) {
        TblWidth leftW = new TblWidth();
        leftW.setW(new BigInteger(left));
        leftW.setType("dxa");
        cellMar.setLeft(leftW);
    }
}
Also used : TblWidth(org.docx4j.wml.TblWidth) BigInteger(java.math.BigInteger) TblPr(org.docx4j.wml.TblPr) CTTblCellMar(org.docx4j.wml.CTTblCellMar)

Example 23 with TblPr

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

the class Docx4j_工具类_S3_Test method createTable.

/**
 * @Description:创建表格(默认水平居中,垂直居中)
 */
public Tbl createTable(int rowNum, int colsNum, int[] widthArr) throws Exception {
    colsNum = Math.max(1, Math.min(colsNum, widthArr.length));
    rowNum = Math.max(1, rowNum);
    Tbl tbl = new Tbl();
    StringBuffer tblSb = new StringBuffer();
    tblSb.append("<w:tblPr ").append(Namespaces.W_NAMESPACE_DECLARATION).append(">");
    tblSb.append("<w:tblStyle w:val=\"TableGrid\"/>");
    tblSb.append("<w:tblW w:w=\"0\" w:type=\"auto\"/>");
    // 上边框
    tblSb.append("<w:tblBorders>");
    tblSb.append("<w:top w:val=\"single\" w:sz=\"1\" w:space=\"0\" w:color=\"auto\"/>");
    // 左边框
    tblSb.append("<w:left w:val=\"single\" w:sz=\"1\" w:space=\"0\" w:color=\"auto\"/>");
    // 下边框
    tblSb.append("<w:bottom w:val=\"single\" w:sz=\"1\" w:space=\"0\" w:color=\"auto\"/>");
    // 右边框
    tblSb.append("<w:right w:val=\"single\" w:sz=\"1\" w:space=\"0\" w:color=\"auto\"/>");
    tblSb.append("<w:insideH w:val=\"single\" w:sz=\"1\" w:space=\"0\" w:color=\"auto\"/>");
    tblSb.append("<w:insideV w:val=\"single\" w:sz=\"1\" w:space=\"0\" w:color=\"auto\"/>");
    tblSb.append("</w:tblBorders>");
    tblSb.append("</w:tblPr>");
    TblPr tblPr = null;
    tblPr = (TblPr) XmlUtils.unmarshalString(tblSb.toString());
    Jc jc = new Jc();
    // 单元格居中对齐
    jc.setVal(JcEnumeration.CENTER);
    tblPr.setJc(jc);
    tbl.setTblPr(tblPr);
    // 设定各单元格宽度
    TblGrid tblGrid = new TblGrid();
    tbl.setTblGrid(tblGrid);
    for (int i = 0; i < colsNum; i++) {
        TblGridCol gridCol = new TblGridCol();
        gridCol.setW(BigInteger.valueOf(widthArr[i]));
        tblGrid.getGridCol().add(gridCol);
    }
    // 新增行
    for (int j = 0; j < rowNum; j++) {
        Tr tr = new Tr();
        tbl.getContent().add(tr);
        // 列
        for (int i = 0; i < colsNum; i++) {
            Tc tc = new Tc();
            tr.getContent().add(tc);
            TcPr tcPr = new TcPr();
            TblWidth cellWidth = new TblWidth();
            cellWidth.setType("dxa");
            cellWidth.setW(BigInteger.valueOf(widthArr[i]));
            tcPr.setTcW(cellWidth);
            tc.setTcPr(tcPr);
            // 垂直居中
            setTcVAlign(tc, STVerticalJc.CENTER);
            P p = new P();
            PPr pPr = new PPr();
            pPr.setJc(jc);
            p.setPPr(pPr);
            R run = new R();
            p.getContent().add(run);
            tc.getContent().add(p);
        }
    }
    return tbl;
}
Also used : TblWidth(org.docx4j.wml.TblWidth) TblPr(org.docx4j.wml.TblPr) Tc(org.docx4j.wml.Tc) P(org.docx4j.wml.P) R(org.docx4j.wml.R) PPr(org.docx4j.wml.PPr) TcPr(org.docx4j.wml.TcPr) STVerticalJc(org.docx4j.wml.STVerticalJc) Jc(org.docx4j.wml.Jc) CTVerticalJc(org.docx4j.wml.CTVerticalJc) TblGrid(org.docx4j.wml.TblGrid) Tr(org.docx4j.wml.Tr) Tbl(org.docx4j.wml.Tbl) TblGridCol(org.docx4j.wml.TblGridCol)

Example 24 with TblPr

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

the class WordprocessingMLPackageRender method addBorders.

/**
 *  本方法给表格添加边框
 */
public void addBorders(Tbl table) {
    table.setTblPr(new TblPr());
    CTBorder border = new CTBorder();
    border.setColor("auto");
    border.setSz(new BigInteger("4"));
    border.setSpace(new BigInteger("0"));
    border.setVal(STBorder.SINGLE);
    TblBorders borders = new TblBorders();
    borders.setBottom(border);
    borders.setLeft(border);
    borders.setRight(border);
    borders.setTop(border);
    borders.setInsideH(border);
    borders.setInsideV(border);
    table.getTblPr().setTblBorders(borders);
}
Also used : CTBorder(org.docx4j.wml.CTBorder) BigInteger(java.math.BigInteger) TblBorders(org.docx4j.wml.TblBorders) TblPr(org.docx4j.wml.TblPr)

Example 25 with TblPr

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

the class Docx4j_工具类_S3_Test method getTblPr.

public TblPr getTblPr(Tbl tbl) {
    TblPr tblPr = tbl.getTblPr();
    if (tblPr == null) {
        tblPr = new TblPr();
        tbl.setTblPr(tblPr);
    }
    return tblPr;
}
Also used : TblPr(org.docx4j.wml.TblPr)

Aggregations

TblPr (org.docx4j.wml.TblPr)26 BigInteger (java.math.BigInteger)14 TblBorders (org.docx4j.wml.TblBorders)10 CTBorder (org.docx4j.wml.CTBorder)9 TblWidth (org.docx4j.wml.TblWidth)8 Tbl (org.docx4j.wml.Tbl)7 Tr (org.docx4j.wml.Tr)7 Jc (org.docx4j.wml.Jc)5 Tc (org.docx4j.wml.Tc)5 TblStyle (org.docx4j.wml.CTTblPrBase.TblStyle)4 CTVerticalJc (org.docx4j.wml.CTVerticalJc)4 P (org.docx4j.wml.P)4 STVerticalJc (org.docx4j.wml.STVerticalJc)4 TblGrid (org.docx4j.wml.TblGrid)3 TblGridCol (org.docx4j.wml.TblGridCol)3 TcPr (org.docx4j.wml.TcPr)3 File (java.io.File)2 STHint (org.docx4j.wml.STHint)2 TrPr (org.docx4j.wml.TrPr)2 FileNotFoundException (java.io.FileNotFoundException)1