Вставка таблицы в закладку с помощью Apache POI

Я использую Apache POI с Jython для создания таблиц и размещения их в определенных позициях docx, где у меня есть закладки. Я могу найти закладки (CTBookmark объекты) по их названиям, создать курсор в начале абзаца, где они размещены, а затем создать новую таблицу там с:

cursor = para.getCTP().newCursor() #para is the paragraph where the bookmark is placed
table = document.insertNewTbl(cursor) #cursor is an XMLCursor

Если бы я просто вставил текст, который я мог бы использовать:

nextNode = bookmark.getDomNode() #considering it is the node named 'bookmarkEnd'
run = para.createRun()
run.setText('foo')
para.getCTP().getDomNode().insertBefore(run.getCTR().getDomNode(),nextNode)

Но чтобы вставить другой элемент, например таблицу, я не могу найти решение. Было бы лучше, если бы таблица была помещена внутри закладки, но если бы она была помещена непосредственно перед ней, а не в начале абзаца, это было бы тоже здорово.

Я ценю любую помощь или альтернативную идею. Спасибо.

1 ответ

  1. Почти там, вам нужно создать строки и ячейки.

    Пример для регистрации.

    Надеюсь помочь.

    XWPFTable table = doc.insertNewTbl(cursor);
    for(int rowIndex=0; rowIndex < 3; rowIndex++){
        String line = "LineContent "+rowIndex;
        XWPFTableRow row = table.getRow(rowIndex);
    
        if(row==null){
            row = table.createRow();       
        }
    
        for(int colIndex=0; colIndex < 2; colIndex++){
            XWPFTableCell  cell = row.getCell(colIndex);
            if(cell == null){
              cell = row.createCell();
            }
    
            cell.setText(line+" Col "+colIndex);
         }
    
    }