没有为新添加的行设置单元格值:使用apache poi

时间:2015-01-05 12:38:21

标签: java apache-poi

我在ppt幻灯片中有一张桌子。表格中的数据将从ArrayList ArrayList中的每个对象({1}}中将包含一行数据)中读取String[]

如果表格中的行数小于ArrayList的大小,则会添加新行以匹配ArrayList的大小。

此处的问题是已为现有行设置数据,但不为新添加的行设置数据。请在下面找到代码段。

非常感谢任何帮助/建议。提前谢谢。

XSLFTable table = (XSLFTable) shape;
int noOfDataRows=table.getNumberOfRows()-1;
if(noOfDataRows<ap.size()) {
    for(int rws=0;rws<(ap.size()- noOfDataRows);rws++) {
        System.out.println(" Adding row");
        table.addRow();
    }
}

List<XSLFTableRow> rows = table.getRows();

for (int i = 0; i < ap.size(); i++) {
    String[] awaitprop={'1','2','3','4','5','6','7','8'};
    XSLFTableRow row=rows.get(i+1);
    List<XSLFTableCell> cells=row.getCells();
    for(int j=0;j<cells.size();j++) {
        XSLFTableCell cell=cells.get(j);
        cell.clearText();
        XSLFTextParagraph paragraph=cell.addNewTextParagraph();
        paragraph.setTextAlign(TextAlign.CENTER);
        XSLFTextRun textRun=paragraph.addNewTextRun();
        textRun.setFontFamily("Calibri");
        textRun.setFontSize(11);
        textRun.setText(awaitprop[j]);
    }   
}

1 个答案:

答案 0 :(得分:0)

参考下面的tutorial,我猜你应该首先在新行中创建单元格。然后你可以把内容放在那里。

    XSLFTableRow headerRow = table.addRow();
    for(int i = 0; i < 3; i++) {
        XSLFTableCell th = headerRow.addCell();
        XSLFTextParagraph p = th.addNewTextParagraph();
        XSLFTextRun r = p.addNewTextRun();
        r.setText("Text");
    }

我希望它有所帮助!