我正在尝试通过Apache POI(带有ooxml-schemas 1.1的3.12)将表插入XWPF docx。

我在用着

CTTblWidth oWidth = oTable.getCTTbl().getTblPr().addNewTblW();
oWidth.setType(STTblWidth.PCT);
oWidth.setW(BigInteger.valueOf(iWidth));


设置桌子的宽度。
通过反复试验,iWidth = 5000似乎是一个合理的值。

我试图通过动态获取页面宽度

CTBody oBody = m_oDocx.getDocument().getBody();
if (!oBody.isSetSectPr()) oBody.addNewSectPr();
CTSectPr oSect = oBody.getSectPr();
if (!oSect.isSetPgSz()) oSect.addNewPgSz();
CTPageSz pageSize = oSect.getPgSz();
BigInteger oPageSize.getW();


但这对于DINA4来说返回的值为11906,相差很远。
即使通过以下方法减去边距:

oPageSize.getW().subtract(oSect.getPgMar().getRight()).subtract(oSect.getPgMar().getLeft())


我离目标还很远。

谁能给我一个提示,我在这里想念什么?
谢谢

最佳答案

代替

oWidth.setType(STTblWidth.PCT);


采用

oWidth.setType(STTblWidth.DXA);


STTblWidth.PCT用于指定宽度的百分之五十。

STTblWidth.DXA用于指定点的二十分之一的宽度。 72点变成一英寸。

09-12 22:04