读取单元格值&用a替换Alt + Enter,

时间:2015-09-24 11:50:26

标签: java excel apache

我正在使用Apache POI api从一个字符串类型的单元格中获取数据,但该值由Alt + Enter分隔。

  1. “是\ n这\钠\ NTEST”
  2. 一个
  3. 测试
  4. 突出显示的文本是一个包含Alt + Enter值的单元格(显示为\ n)。我想读取此数据替换“\ n”或Alt + Enter with,然后使用该值 替换后我想要的输出\ n是:is,this,A,test

    我使用的代码如下:

    String data = cell.getStringCellValue();
                                System.out.println("output:"+data);
                                if(data.contains("\n")){
                                    sb.append(data.replace("\n", ","));
                                }else{
                                    sb.append(data);
                                }
                                //sb.append(myValue);
                                sb.append('|');
    

    这里sb是我追加数据的stringbuffer。 然后将StringBuffer对象sb中的数据写入带有管道作为分隔符的csv文件。 请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

你做的几乎一切都正确。

  1. 如果逗号仍然是字段分隔符,则必须将数据放在双引号之间(这是常规约定)。或者更好地将逗号的使用排除在分隔符之外。
  2. 如果代替\n(LF),则存在CR + LF \r\n,则\r可能已被识别为记录终止符。
  3. 我无法完全阅读你的描述是什么情况。

    以下两点都有。并检查。

           if (data.contains("\r")) {
               System.out.println("CR found");
           }
    
           sb.append('\"')
               .append(data.replace("\r?\n", ","));
               .append('\"');
               .append('|');
    

    不需要ifStringBuilder比旧版StringBuffer快一点。