XWPFTableRow添加当前样式的新行?

时间:2013-05-20 08:20:55

标签: java apache-poi docx

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

我如何解决这个问题?

2 个答案:

答案 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 ) );
        }
    }
}