Я написал таблицу данных в файл, разделенный на трубы (|), используя приведенный ниже код. проблема в том, что в html-шаблоне содержится \ r \ n. из-за \ r \ n данные передаются по строкам в файле psv. чтобы преодолеть это, я попробовал несколько способов разрешить это, но не повезло .. поэтому проблема происходит, когда когда-либо у меня были данные, содержащие \ r \ n .. кто-нибудь догадывается, почему эта проблема происходит.Запись таблицы данных в файл с разделяемым файлом (.psv) в C#
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;
}
Спасибо за ответ ... но это ответил мне 50% только. Я могу видеть только половину данных в файле psv. Остальные данные были потеряны ... – user3301440
Остальная часть кода выглядит хорошо для меня. Это немного запутанно, но он должен работать нормально, если вы хотите, чтобы труба была последней в каждой из ваших строк. Это немного необычно, но ваш выбор. Возможно, вам нужно изучить ваш метод тестирования. –
Я также пробовал с кодом ниже, но получаю еще одну проблему, как усечение данных .. Я уверен, что проверенный код, но я не могу найти, где строка вопроса.Join ("", Regex.Split (text, @ "(?: \ г \ п | \ п | \ г) ")); – user3301440