2015-01-05 45 views
0

我在ppt幻灯片中有一个表。将从ArrayListArrayList中的每个对象将包含一行数据)中读取到该表的数据String[]没有为新添加的行设置单元格值:使用apache poi

如果表中的行数小于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]); 
    } 
} 
+0

对于你的新行,你不需要添加一些单元格吗? – Gagravarr

+0

谢谢Gagravarr。 – user4189031

回答

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"); 
    } 

我希望它有帮助!

相关问题