我有一个以下格式的字符串:
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中,我只得到最后一个值,因为旧的值会覆盖。
答案 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"));