답 일지 몰라도 답답함은 해결되길

IT

[IT] Apache Poi::XWPFTable 테이블 복사할 때 하면 안 되는 방식

아담도라이바 2020. 10. 20. 09:17
반응형

템플릿으로 제공된 테이블을 이용해서 콘텐츠당 한 개의 테이블을 생성해야 했다.

Content Table

 

@ 첫번째 시도 - XWPFDocument에서 테이블 복사 API 제공 

"실패"

아주 간단하게 테이블을 복사해서 붙여넣기 하면 될 것 같았다. XWPFDocument 클래스에서 제공될 것 같았지만 없었다.

 

@ 두번째 시도 - XWPFTable에서 테이블을 복제하는 API 제공

"실패"

복제를 하는게 있지 않을까 했는데 없었다..

 

@ 세번째 시도 - XWPFTable 복제 생성

"성공적인듯 했으나 실패"

public static void duplicateTable(XWPFDocument doc, XWPFTable table, int count) throws Exception {
    for (int i = 0; i < count; i++) {
        int newTableIndex = doc.getTables().size();
        CTTbl ctTbl = doc.getDocument().getBody().insertNewTbl(newTableIndex);
        ctTbl.set(table.getCTTbl());

        XWPFTable newTable = new XWPFTable(ctTbl, doc); // Create a new table using the CTTbl upon

        doc.insertTable(newTableIndex, newTable);
        doc.createParagraph();
    }
}

위의 코드로 수행할 경우 새로 생성한 "newTable"은 정상적으로 document에 추가되지만 이후 아래와 같은 방법으로 테이블을 불러와서 수정할 경우 Cell의 텍스트 변경이 안되는 현상이 발견되었다.

XWPFTable newTable = document.getTableArray($newTableIndex$);

 

반응형