我使用下面的代码将数据表写入管道分隔文件(|)。问题是我在数据库中有一个包含 \ r \ n 的html模板。由于数据中的 \ 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;
}
答案 0 :(得分:0)
public static string PsvQuote(string text)
{
text = String.Format("\"{0}\"", text.Replace("|","").Replace("\r","").Replace("\n","");
return text;
}