2013-05-20 3 views
0

Я пытаюсь использовать POI Apache, чтобы добавить новую строку в существующий XWPFTable, чтобы добавленная строка удерживала стиль (шрифт, цвет и т. Д.) Последней строки. Обычно XWPFTable.createRow() возвращает строку с пустым стилем. Я попытался создать новый объект XWPFTableRow, используя CTRow последней строки в качестве параметра конструкции и XWPFTable.addRow(). Однако, когда я создал объект, он просто ссылается на последнюю строку (независимо от того, какое изменение внесено в объект, отражается на последней строке, а не на новой).XWPFTableRow добавляет новую строку с текущим стилем?

Как мне обойти это?

ответ

1
XWPFTableRow lastTableRow = xwpfTable.getRows().get(xwpfTable.getRows().size() - 1); 
XWPFTableRow row = xwpfTable.createRow(); 
for (List<String> rowData : rowList) 
{ 
    for (int i = 0; i < rowData.size(); i++) 
    { 
     XWPFTableCell cell = row.getCell(i); 
     XWPFTableCell prevRowCell = lastTableRow.getCell(i); 
     if(cell != null) 
     { 
      cell.getCTTc().addNewTcPr().addNewTcBorders(); 
         cell.getCTTc().getTcPr().setTcBorders(
              prevRowCell.getCTTc().getTcPr().getTcBorders()); 
      cell.setText(rowData.get(i)); 
     } 
    } 
} 
3

Я знаю, что это старый вопрос, но, возможно, это кому-то пригодится:

xwpfTable.addRow(xwpfTable.getRow(xwpfTable.getRows().size() - 1)); 

Добавляет новую строку в конце таблицы, идентичной до последней строки.

+0

Это добавляет новую строку, но объект тот же –

Смежные вопросы