我正在尝试通过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点变成一英寸。