【问题标题】:Unable to change orientation of ms-word file(XWPF) using apache poi无法使用 apache poi 更改 ms-word 文件(XWPF)的方向
【发布时间】:2015-11-30 02:03:50
【问题描述】:

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

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

【问题讨论】:

  • 哪一行给出了 NPE?如果我们不知道它来自哪里,就很难修复!
  • @Gagravarr 我已经包含了我收到错误的行!请帮助我!!

标签: java ms-word apache-poi xwpf


【解决方案1】:

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

所以,你应该换行

    CTPageSz pageSize = section.getPgSz();

改为

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

然后继续你的电话,比如

    pageSize.setOrient(STPageOrientation.LANDSCAPE);

【讨论】:

  • 太好了,很高兴有帮助!为了让其他人知道,请点击问题旁边的勾号,“接受”它以标记它是正确的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-02
  • 2011-09-06
  • 1970-01-01
相关资源
最近更新 更多