我尝试使用Apache POI在现有的XWPFTable上添加新行,以便添加的行保存最后一行的样式(字体,颜色等)。通常,XWPFTable.createRow()返回一个空白样式的行。我尝试使用最后一行的CTRow作为构造参数和XWPFTable.addRow()来创建新的XWPFTableRow对象。但是,当我创建对象时,它只是引用最后一行(对对象所做的任何更改都反映在最后一行,而不是新添加的行)。
我如何解决这个问题?
答案 0 :(得分:3)
我知道这是一个老问题,但也许这对某人有用:
xwpfTable.addRow( xwpfTable.getRow( xwpfTable.getRows().size() - 1 ) );
在表格的末尾添加一个新行,与最后一行相同。
答案 1 :(得分: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 ) );
}
}
}