1

我正在尝试在 apache poi 中使用 XWPF 格式创建一个 word 文档。该文档需要创建表格,因此我需要将页面方向设置为横向。我使用Java中的Apache POI XWPF在同一个word文档中使用了现有的横向和纵向页面代码, 并 在创建文档后包含了一个函数调用,但它抛出了一个空指针异常。任何人都可以帮助我。先感谢您。我使用了以下代码:

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);
4

1 回答 1

2

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

所以,你应该换行

    CTPageSz pageSize = section.getPgSz();

取而代之的是

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

然后继续你的电话,比如

    pageSize.setOrient(STPageOrientation.LANDSCAPE);
于 2015-11-29T18:03:50.503 回答