0

我尝试使用 Apache POI 将新行添加到现有 XWPFTable 上,以便添加的行保持最后一行的样式(字体、颜色等)。通常, XWPFTable.createRow() 返回空白样式的行。我尝试使用最后一行的 CTRow 作为构造参数和 XWPFTable.addRow() 创建新的 XWPFTableRow 对象。但是,当我创建对象时,它只是引用最后一行(对对象所做的任何更改都会反映在最后一行上,而不是新添加的行上)。

我该如何解决这个问题?

4

2 回答 2

3

我知道这是一个老问题,但也许这对某人有用:

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

在表的末尾添加一个新行,与最后一行相同。

于 2015-04-12T22:24:59.170 回答
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 ) );
        }
    }
}
于 2013-06-18T10:03:53.963 回答