使用java中的poi通过循环将值放入单个单元格中

时间:2012-10-23 06:09:13

标签: java newline apache-poi

我有一个以下格式的字符串:

abcd|1|2,pqr|2|3......

我想在单个单元格中输出以下内容:

abcd|1|2
pqr|2|3

我在,字符上拆分字符串。

字符串值来自另一个循环

for(ActivityDTO activity : activityList) {

    HSSFCell cell6 = dataRowAct.createCell(6);
    String str[] = string.split(",");

    for(int i = 0; i < str.length; i++) {
        cell6.setCellValue(new HSSFRichTextString(str[i]+"\n"));
    }
}

但是在excel中,我只得到最后一个值,因为旧的值会覆盖。

5 个答案:

答案 0 :(得分:3)

看起来你正在重复设置cell6的值。它最终将成为最后设定的价值,这与您遇到的问题相匹配。根据您想要的结果,您需要更改for循环中设置的单元格。也就是说,根据你的情况将cell6改为其他东西。

答案 1 :(得分:2)

您需要构建一个String(使用StringBuilder),然后将最终结果打印到单元格。

StringBuilder sb = new StringBuilder();

for (int i = 0; i < str.length; i++) {
    sb.append(str[i] + "\n");
}

cell6.setCellValue(sb.toString());

作为另类......

如果您只是想用换行符替换,个字符,可以像这样使用String.replace()

String s = "abcd|1|2,pqr|2|3";
cell6.setCellValue(s.replace(",", "\n"));

这会用换行符替换,的每次出现。

答案 2 :(得分:0)

我希望我是对的 你想要整个一个单元格

abcd|1|2

所以

   String str[] = string.split(",");
   int r=//row number
   Row row=sheet.createRow(r);
for(int i = 0; i < str.length; i++) {
    cell6.setCellValue(new HSSFRichTextString(str[i]+"\n"));
    cell6=sheet.createRow(++r).createCell(/*cellnumber*/);
}

答案 3 :(得分:0)

因为您要删除旧值。

   String s="";
   for(int i=0;i<str.length;i++) {
     s+=str[i]+"\n";
   }
   cell6.setCellValue(new HSSFRichTextString(s));  

答案 4 :(得分:0)

我不知道你的 cell6 是什么。无论如何,逻辑应该是:

cell6.setCellValue(cell6.getCellValue()+str[i]+"\n"));