0

我已经使用下面的代码将数据表写入管道分隔文件(|)。问题是我在数据库中有一个 html 模板包含\r\n。由于数据中的\r\n数据正在 psv 文件中逐行获取。为了克服这个问题,我尝试了几种方法来解决它,但没有运气..所以当我有一个包含 \r\n 的数据时,问题就发生了..有人猜到为什么会发生这个问题。

public static  void start()
            {
             string filePath = @"E:\Files\2.psv;
            string ConnectionString = "server=localhost;database=sql       
                                       sample;Integrated Security=SSPI;";
            con.ConnectionString = ConnectionString;
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "[dbo].[getDetailsCodeId]";
            cmd.Parameters.AddWithValue("@id", Id);
            con.Open();

            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(ds);
            DataTable dt = new DataTable();
            dt = ds.Tables[0];
            StringBuilder sb = new StringBuilder();
            bool isColumnNameAppend = false;
            FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate,     
            FileAccess.ReadWrite);
            StreamWriter str = new StreamWriter(fs);
            int count = dt.Columns.Count;
            str.BaseStream.Seek(0, SeekOrigin.End);

           if (!isColumnNameAppend)
            {
                for (int i = 0; i < count; i++)
                {
                    sb.Append(dt.Columns[i].ColumnName + '|');
                }
                sb.Append(Environment.NewLine);
                isColumnNameAppend = true;
            }

            for (int j = 0; j < dt.Rows.Count; j++)
            {
                for (int k = 0; k < dt.Columns.Count; k++)
                {
                    sb.Append(PsvQuote((dt.Rows[j][k].ToString())) + '|');
                }
                sb.Append(Environment.NewLine);
            }

            str.Write(sb.ToString());
            str.Flush();
            str.Close();
            fs.Close();
          }

   public static string PsvQuote(string text)
    {
              text = String.Format("\"{0}\"", text);
              return text;
    }
4

1 回答 1

0
   public static string PsvQuote(string text)
    {
              text = String.Format("\"{0}\"", text.Replace("|","").Replace("\r","").Replace("\n","");
              return text;
    }
于 2015-03-19T17:45:21.027 回答