我正在尝试在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);
答案 0 :(得分:1)
并非所有部分都会在其上设置页面大小对象。你需要检查一个是否存在,如果不存在则添加它,然后再为其设置方向
所以,你应该改变一行
CTPageSz pageSize = section.getPgSz();
改为
CTPageSz pageSize;
if (section.isSetPgSz()) {
pageSize = section.getPgSz();
} else {
pageSize = section.addNewPgSz();
}
接着继续你的电话,如
pageSize.setOrient(STPageOrientation.LANDSCAPE);