Java 读取单元格值&;替换Alt+;带着一个,

Java 读取单元格值&;替换Alt+;带着一个,,java,excel,apache,Java,Excel,Apache,我使用ApachePOIAPI从字符串类型的单元格中获取数据,但值由Alt+Enter分隔 他 这个 “是\n这个\n测试” a 试验 突出显示的文本是一个单元格,其中包含Alt+Enter的值(显示为\n)。我要读取此数据替换“\n”或Alt+Enter,然后使用该值 i、 e.替换后我想要的输出\n是:is,this,A,test 我使用的代码如下所示: String data = cell.getStringCellValue();

我使用ApachePOIAPI从字符串类型的单元格中获取数据,但值由Alt+Enter分隔

  • 这个
  • “是\n这个\n测试”
  • a
  • 试验
  • 突出显示的文本是一个单元格,其中包含Alt+Enter的值(显示为\n)。我要读取此数据替换“\n”或Alt+Enter,然后使用该值 i、 e.替换后我想要的输出\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文件。
    请帮我解决这个问题

    你几乎每件事都做对了

  • 如果逗号仍然是字段分隔符,则必须将数据放在双引号之间(这是一般惯例)。或者最好不要使用逗号作为分隔符
  • 如果存在CR+LF而不是
    \n
    (LF)
    \r\n
    ,则
    \r
    可能已被识别为记录终止符
  • 我不能完全从你的描述中看出情况是怎样的

    以下两种方法都适用。还有支票

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

    if
    是不必要的,并且
    StringBuilder
    比旧的
    StringBuffer

    快一点。您知道如何检索单元格的值吗?您知道如何将其设置为新值吗?你尝试过什么?我尝试过使用Cell对象并从中获取字符串值..给我们看一些代码。我们想知道你做错了什么。String data=cell.getStringCellValue();System.out.println(“输出:+数据”);if(data.contains(“\n”){sb.append(data.replace(“\n”,“,”);}else{sb.append(data);}//sb.append(myValue);某人附加(“|”);不要把代码放在这里,更新你的问题,告诉我你得到了什么输出。什么是某人?如果它是StringBuffer,则需要将其内容转储到类似cell.set…(sb.toString())的位置