我曾经也遇到过这样问题 没找到好的解决办法 只能在生成csv文件的过程中限定把分隔符设置成比较特殊的符号。顶一下,看其他人有什么高招!

解决方案 »

  1.   

    只能在生成csv的时候,替换,和“”。
      

  2.   

    原来自己写了个读CSV文件的CLASS
    数据中有,的话,必须要被""引起来,有一定规律.
      

  3.   

    private List SplitCsvData( String str ) {
            String tempStr = str.trim();
            List tempList = new ArrayList();
            int lngSplit = 0;
            int lngBufLen = tempStr.length();
            boolean blnAddWord = false;        String strChar = "";
            String strWord = "";
            String strTemp = "\"";
            String strSplit = ",";
            if ( lngBufLen > 0 ) {
                for ( int i = 0; i < lngBufLen; i++ ) {
                    strChar = tempStr.substring( i, i + 1 );
                    if ( ( strChar.equals( strTemp ) ) && ( lngSplit == 0 ) ) {
                        lngSplit = 1;
                    } else if ( ( strChar.equals( strTemp ) ) && ( lngSplit == 1 ) ) {
                        if ( ! ( i == lngBufLen - 1 ) ) {
                            if ( !tempStr.substring( i + 1, i + 2 ).equals( strSplit ) ) {
                                lngSplit = 1;
                                strWord = strWord + strChar;
                            } else {
                                lngSplit = 2;
                            }
                        }
                        if ( i == lngBufLen - 1 )
                            blnAddWord = true;                } else if ( ( strChar.equals( strTemp ) ) && ( lngSplit == 2 ) ) {
                        strWord = strWord + strChar;
                        lngSplit = 1;
                    } else if ( ( strChar.equals( strTemp ) ) && ( lngSplit == 1 ) ) {
                        strWord = strWord + strChar;
                    } else if ( ( !strChar.equals( strTemp ) ) && ( !strChar.equals( strSplit ) ) ) {
                        strWord = strWord + strChar;
                        if ( i == lngBufLen - 1 )
                            blnAddWord = true;
                    } else if ( strChar.equals( strSplit ) && ( lngSplit == 1 ) ) {
                        strWord = strWord + strChar;                } else if ( ( strChar.equals( strSplit ) && ( lngSplit == 0 || lngSplit == 2 ) ) ||
                        ( i == lngBufLen - 1 ) ) {
                        blnAddWord = true;
                    }
                    if ( blnAddWord ) {
                        tempList.add( strWord );
                        strWord = "";
                        lngSplit = 0;
                        blnAddWord = false;
                    }
                }
            }
            return tempList;
        }这是写完的函数已经能够对一般的csv文件进行拆分了,但是有极限还是控制不了。希望各位朋友能够在这个基础上再加以修改能过做到无懈可击。 谢谢各位了
      

  4.   

    问题不在你的解析方法,而是数据源CSV文件。CSV数据里面的,和""不转换是不行的。