首页 文章

无法使用apache poi更改ms-word文件(XWPF)的方向

提问于
浏览
0

我想在apache poi中使用XWPF格式创建一个word文档 . 该文档需要创建表,所以我需要将页面方向设置为横向 . 我使用Landscape and portrait pages in the same word document using Apache POI XWPF in Java的现有代码,并在创建文档后包含一个函数调用,但它抛出一个空指针exeption . 任何人都可以帮助我 . 先感谢您 . 我使用以下代码:

private void changeOrientation(XWPFDocument document, String orientation){
    CTDocument1 doc = document.getDocument();
    CTBody body = doc.getBody();
    CTSectPr section = body.addNewSectPr();
    XWPFParagraph para = document.createParagraph();
    CTP ctp = para.getCTP();
    CTPPr br = ctp.addNewPPr();
    br.setSectPr(section);
    CTPageSz pageSize = section.getPgSz();
    if(orientation.equals("landscape")){
        pageSize.setOrient(STPageOrientation.LANDSCAPE);
        pageSize.setW(BigInteger.valueOf(842 * 20));
        pageSize.setH(BigInteger.valueOf(595 * 20));
    }
    else{
        pageSize.setOrient(STPageOrientation.PORTRAIT);
        pageSize.setH(BigInteger.valueOf(842 * 20));
        pageSize.setW(BigInteger.valueOf(595 * 20));
    }
}

它在线上抛出一个错误:

pageSize.setOrient(STPageOrientation.LANDSCAPE);

1 回答

  • 1

    并非所有部分都会在其上设置页面大小对象 . 您需要检查是否存在,如果没有,则在设置方向之前添加

    所以,你应该改变这条线

    CTPageSz pageSize = section.getPgSz();
    

    反而是

    CTPageSz pageSize;
        if (section.isSetPgSz()) {
           pageSize = section.getPgSz();
        } else {
           pageSize = section.addNewPgSz();
        }
    

    然后再继续你的电话

    pageSize.setOrient(STPageOrientation.LANDSCAPE);
    

相关问题