Apache POI XWPF 爬坑指南之二特定位置插入表格、段落、图片

接上话

特定位置插入表格、段落、图片


  • 思路
    在word中做个标记,通常这个标记独自占据一个段落,例如
    标记示例

    我们想要在标记处插入一个表格,一个段落,一幅图片,其中插入段落可以使用上话提到的文本替换方式,也可以用今天提到的方法。
    具体方法是,获取这个段落,然后得到一个newXMLCursor,然后用这个游标插入表格、段落、图片。代码如下
  • 插入段落
public static void main(String[] args) throws IOException, InvalidFormatException {
    String filepath = "D:\\users\\IDEA\\POIUtils\\doc\\测试文档.docx";
    String destpath = "D:\\users\\IDEA\\POIUtils\\doc\\测试文档_result.docx";

    OPCPackage opcPackage = POIXMLDocument.openPackage(filepath);
    XWPFDocument xwpfDocument = new XWPFDocument(opcPackage);
    List xwpfParas = xwpfDocument.getParagraphs();
    int num=0;
    for(int i=0;i rows = xwpfTable.getRows();
        for (XWPFTableRow row : rows) {
            List cells = row.getTableCells();
            for (XWPFTableCell cell : cells) {
                CTTc cttc = cell.getCTTc();
                CTP ctp = cttc.getPList().get(0);
                CTPPr ctppr = ctp.getPPr();
                if (ctppr == null) {
                    ctppr = ctp.addNewPPr();
                }
                CTJc ctjc = ctppr.getJc();
                if (ctjc == null) {
                    ctjc = ctppr.addNewJc();
                }
                ctjc.setVal(STJc.Enum.forString(horizontalLocation)); //水平居中
                cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.valueOf(verticalLoction));//垂直居中
            }
        }
    }

    /**
     * 设置表格位置
     *
     * @param xwpfTable
     * @param location  整个表格居中center,left居左,right居右,both两端对齐
     */
    public static void setTableLocation(XWPFTable xwpfTable, String location) {
        CTTbl cttbl = xwpfTable.getCTTbl();
        CTTblPr tblpr = cttbl.getTblPr() == null ? cttbl.addNewTblPr() : cttbl.getTblPr();
        CTJc cTJc = tblpr.addNewJc();
        cTJc.setVal(STJc.Enum.forString(location));
    }
  • 实验结果


    实验结果

你可能感兴趣的:(Apache POI XWPF 爬坑指南之二特定位置插入表格、段落、图片)