最近公司需要实现word分栏 显示导出
网上搜到的最多的就是这个
java poi 实现word文档分栏 - SegmentFault 思否https://segmentfault.com/q/1010000040700859但是死活得不到分栏的效果
public static void main(String[] args) throws Exception {
XWPFDocument document = new XWPFDocument();
setDocumentMargin(document, "567", "0", "567", "0");
CTDocument1 doc = document.getDocument();
CTBody body = doc.getBody();
if (body.isSetSectPr()){
body.addNewSectPr();
}
CTSectPr section = body.getSectPr();
CTColumns ctColumns = section.addNewCols();
ctColumns.setNum(BigInteger.valueOf(2));
// body.addNewSectPr().addNewCols().setNum(BigInteger.valueOf(2));
XWPFParagraph splitLine = document.createParagraph();
XWPFRun run1 = splitLine.createRun();
run1.setText("_____________________________________________________________________________");
document.write(new FileOutputStream("D:\\workspace\\demo\\src\\test\\resources\\CreateWordFormulaFromLaTeX.docx"));
}
将word文档转换成xml文件如下 确实结构是一致的
将代码变成如下 可以得到分栏结果
body.addNewSectPr().addNewCols().setNum(BigInteger.valueOf(2));
得到的结果也是对的
原因
于是debug了一下 发现我获取的对象不对 因为代码中添加的页边距
CTSectPr section = body.getSectPr()这段代码获取了第一个为设置页边距的对象
所以一直不能成功分栏