tblPr 요소와 그 속성 tblpX 및 tblpY를 사용하여 테이블을 배치하려고합니다. 내 문제는 .docx 파일을 열 때 테이블이 페이지 왼쪽 상단에 있고 tblpX 및 tblPY 값을 무시한다는 것입니다. .docx 테이블의 위치는 here 또는 here입니다. 이 같은 보일 것입니다 :Apache POI, 테이블 위치 지정이 무시되고 있습니다 (.docx, xwpf)
<w:tbl>
<w:tblPr>
<w:tblpPr w:vertAnchor="text" w:tblpY="200" />
</w:tblPr>
…
</w:tbl>
아파치 POI는 "tblpY"와 "tblpX"속성을 제공하지 않습니다, 그래서이 속성을 추가 생각할 수있는 유일한 방법은 수동이다. 여기 내 코드는 이렇게하는 :
public static XWPFTable createTable(XWPFDocument doc) {
//CTTbl ctTable = CTTbl.Factory.newInstance();
XWPFTable table = doc.createTable();//new XWPFTable(ctTable, doc, 0, 0);
XmlObject x = (XmlObject) table.getCTTbl().getTblPr();
XmlCursor c = x.newCursor(); // Create a cursor at the element
c.toNextToken(); // Move cursor after the tblPr tag
c.insertElement("tblPr", "http://schemas.openxmlformats.org/wordprocessingml/2006/main");
c.toPrevSibling(); //Now go to the tblPr
XmlObject x2 = c.getObject(); //Get the tblPr object
c.dispose();
c = x2.newCursor(); //Now our cursor is inside the second tblPr
c.toNextToken();
c.insertAttributeWithValue("tblpX", "http://schemas.openxmlformats.org/wordprocessingml/2006/main", "500");
c.insertAttributeWithValue("tblpY", "http://schemas.openxmlformats.org/wordprocessingml/2006/main", "500");
c.dispose();
XWPFTableRow tr = table.getRow(0);
XWPFTableCell cell = tr.getCell(0);
cell.setText("some text");
return table;
}
내가 .DOCX을 열고 확인한 다음 내가 잘못하고있는 중이 야 무엇 document.xml 그래서
<w:tbl>
<w:tblPr>
<w:tblPr w:tblpX="500" w:tblpY="500"/>
<w:tblW w:w="0" w:type="auto"/>
<w:tblBorders>
<w:top w:val="single"/>
<w:left w:val="single"/>
<w:bottom w:val="single"/>
<w:right w:val="single"/>
<w:insideH w:val="single"/>
<w:insideV w:val="single"/>
</w:tblBorders>
</w:tblPr>
<w:tr>
<w:tc>
<w:p>
<w:r>
<w:t>some text</w:t>
</w:r>
</w:p>
</w:tc>
</w:tr>
</w:tbl>
의 내부에 있다고? 테이블이 왜 맨 위 왼쪽에 있습니까? Microsoft tblpX 및 tblpY 값을 무시하는 이유는 무엇입니까?
오 !!! 해결책을 찾았습니다! –