2012-10-23 25 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"));