1

我有以下格式的字符串:

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 中,我只得到最后一个值,因为旧值覆盖。

4

5 回答 5

3

看起来您正在重复设置 cell6 的值。它最终将成为您最后设置的任何值,这与您遇到的问题相匹配。根据您最终想要的结果,您需要更改在 for 循环中设置的单元格。即,将 cell6 更改为其他内容,具体取决于我在做什么。

于 2012-10-23T06:14:34.050 回答
2

您需要构建一个字符串(使用 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"));

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

于 2012-10-23T06:14:12.273 回答
0

因为您正在删除旧值。

   String s="";
   for(int i=0;i<str.length;i++) {
     s+=str[i]+"\n";
   }
   cell6.setCellValue(new HSSFRichTextString(s));  
于 2012-10-23T06:20:03.733 回答
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*/);
}
于 2012-10-23T06:17:19.747 回答
0

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

cell6.setCellValue(cell6.getCellValue()+str[i]+"\n"));
于 2012-10-23T06:22:51.693 回答