【问题标题】:putting a value in a single cell through loop using poi in java在java中使用poi通过循环将值放入单个单元格
【发布时间】:2012-10-23 06:09:13
【问题描述】:

我有一个格式如下的字符串:

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

【问题讨论】:

  • 我们可以看看你在哪里声明了你的cell6吗?
  • 在上面的 cell6 代码中,最后一个值将被分配。所以,我们需要创建不同的单元格来设置值。

标签: java newline apache-poi


【解决方案1】:

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

【讨论】:

    【解决方案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"));
    

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

    【讨论】:

    • 我认为他想在不同的单元格中添加每个而不是在同一个单元格中附加值。否则他就不用拆了
    • 我没有看到任何证据表明情况如此。看起来他正在拆分它,以便他可以在多行上打印字符串(是的,他可以只使用 String.replace() 代替)。他说:我想在一个单元格中输出以下内容。没有提到多个单元格。
    • @user1697114 如果你喜欢他的回答,记得点击它旁边的复选标记。
    【解决方案3】:

    我希望我是对的 你想要一个单元格中的整体

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

    【讨论】:

      【解决方案4】:

      因为您正在删除旧值。

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

      【讨论】:

      • 我认为他想在不同的单元格中添加每个而不是在同一个单元格中附加值。否则他就不用拆了
      【解决方案5】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多