2012-10-23 23 views
1

使用POI我有以下格式的字符串:把一个价值在单细胞通过循环在Java中

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中我只得到了最后的值作为旧值overwites。

+0

我们可以看到你声明你的'cell6'吗? –

+0

在上面的cell6代码中,最后的值将被赋值。因此,我们需要创建不同的单元格来设置值。 – swamy

+0

http://stackoverflow.com/a/12072434/1211000 – swamy

回答

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

这取代的,每次出现一个新队。

+0

我认为他想要在不同的单元格中添加每个元素,以便不在同一单元格中追加值。否则他不会分裂它 –

+0

我没有看到任何证据表明这种情况。看起来他在分割它,所以他可以在多行打印字符串(是的,他可以直接使用String.replace())。他说:我想在细胞中输出以下信息。没有提到多个细胞。 – jahroy

+0

是的,我试过这个工作。非常感谢.... – user1697114

3

它看起来像你重复设置cell6的值。它最终会成为最后一次同比的价值,这与你遇到的问题相符。根据你想要的结果,你需要改变你在for循环中设置的单元格。即将cell6更改为其他内容,具体取决于我所处的位置。

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*/); 
} 
0

因为要卸下旧值。

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

我想他想在不同的单元格中添加每个单元格,以便不在同一个单元格中追加值。否则他不会分裂它 –

0

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

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