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 を使用して) Stringを作成し、最終結果をセルに出力する必要があります。

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

私が正しいことを願っていますあなたは1つのセルに全体が欲しい

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

古い値を削除しているためです。

   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

ここであなたのcell6が何であるかわかりません。とにかく、ロジックは次のようになります。

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