最近在做一项目需要将数据库的数据导出到TXT文件里,供盘点机(下位机)读取 ,可是我将文件导出后,在盘点机里不能读,提示格式错误!我在网上查了一下,好象是什么格式问题,请问怎么设置格式?我的代码如下:
注意:盘点机程序是C写的 StreamWriter mFileName = new StreamWriter(fileName, true, Encoding.Default);
            mFileName.WriteLine(unicodeString);
            mFileName.Flush();
            mFileName.Close();

解决方案 »

  1.   

    给你一个写好的方法:        public static void WriteCSV(string filePathName,bool append, List<String[]> ls)
            {
                StreamWriter fileWriter=new StreamWriter(filePathName,append,Encoding.Default);
                foreach(String[] strArr in ls)
                {
                    fileWriter.WriteLine(String.Join (“,",strArr) );//这里换成你实际的分隔符
                }
                fileWriter.Flush();
                fileWriter.Close();           
            }
      

  2.   

    我刚才问了盘点机那边了,说是我各个字段长度不对,在中英文混合情况下,如何截取指定(字节)长度的字符,我的代码如下,难道是我这个代码出问题了:
     public  string GetFirstString(string stringToSub, int length)
            {
                Regex regex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled);
                char[] stringChar = stringToSub.ToCharArray();
                StringBuilder sb = new StringBuilder();
                int nLength = 0;
                bool isCut = false;
                for (int i = 0; i < stringChar.Length; i++)
                {
                    if (regex.IsMatch((stringChar[i]).ToString()))
                    {
                        sb.Append(stringChar[i]);
                        nLength += 2;
                    }
                    else
                    {
                        sb.Append(stringChar[i]);
                        nLength = nLength + 1;
                    }                if (nLength > length)
                    {
                        isCut = true;
                        break;
                    }
                }
                if (isCut)
                    //return sb.ToString() + "..";
                    return sb.ToString().Substring(0,sb.Length -2);
                else
                    return sb.ToString();
            }
      

  3.   

    先不要急着看代码,应先去看你产生出来的txt文件内容。
    然后看哪里没达到对方的要求,之后再做针对性改正
      

  4.   

    谢谢各位,找到问题了,是哪个截取指定字节长度的方法出问题了,与大家一起分享一下:
    /// <summary>
            /// 取指定长度的字符串
            /// </summary>
            /// <param name="Source">被格式化字符串</param>
            /// <param name="Length">截取长度</param>
            /// <returns></returns>
            private  string SubString(string Source ,int  Length)
            {
                string result=string.Empty ;            Byte[]  tmpByteArr;
                tmpByteArr=System.Text.Encoding.Default.GetBytes(Source);            if (Length>=tmpByteArr.Length  )
                {
                    result =Source ;                result = result + new string(Convert.ToChar(" "), Length - tmpByteArr.Length);
                } 
                else 
                {
                   int temp=0;                for (int i=0;i<tmpByteArr.Length ;i++ )
                    {
                        if (tmpByteArr[i]>127 )
                        {
                            temp=temp +1; 
                        }
                    }                if (temp%2==1 )
                    {
                        result =  System.Text.Encoding.Default.GetString(tmpByteArr, 0, Length - 1)+"  ";
                    } else 
                    {
                        result = System.Text.Encoding.Default.GetString(tmpByteArr, 0, Length) ;  
                    }
                }
                if (Length > result.Length)
                {
                    int k = 0;
                }
                tmpByteArr = System.Text.Encoding.Default.GetBytes(result );            result = System.Text.Encoding.Default.GetString(tmpByteArr, 0, Length);
                return result;
            }