C# CSV换行符
我正在根据数据库值构建一个csv文件。当我在excel中打开csv时,所有内容都在一行上。为了解决这个问题,我在每行后面添加了C# CSV换行符,c#,.net,csv,newline,C#,.net,Csv,Newline,我正在根据数据库值构建一个csv文件。当我在excel中打开csv时,所有内容都在一行上。为了解决这个问题,我在每行后面添加了\n或\r。现在,当我在excel中从第二行开始打开时,第一列的其余部分都有一个空值 即: 值1、值2、值3 ,值1,值2,值3 ,值1,值2,值3 ,值1,值2,值3 我可以在第一个值之前添加一个换行符或返回符,但是会有一个空的行和列。我怎样才能把它排好 我的代码: try { connection = new iDB2Connection(connectio
\n
或\r
。现在,当我在excel中从第二行开始打开时,第一列的其余部分都有一个空值
即:
值1、值2、值3
,值1,值2,值3
,值1,值2,值3
,值1,值2,值3
我可以在第一个值之前添加一个换行符或返回符,但是会有一个空的行和列。我怎样才能把它排好
我的代码:
try
{
connection = new iDB2Connection(connectionString);
connection.Open();
command = new iDB2Command(commandString, connection);
reader = command.ExecuteReader();
var dt = new DataTable();
dt.Load(reader);
List<string> CsvList = new List<string>();
foreach (DataRow row in dt.Rows)
{
foreach (var item in row.ItemArray)
{
CsvList.Add(item.ToString());
}
if (i == 1)
{
CsvList.Add(" ");
CsvList.Add("Customer Service");
CsvList.Add("Customer Service Representative" + "\r");
// \r and \n not working
}
}
System.IO.StreamWriter streamWriter;
streamWriter = new System.IO.StreamWriter(fileName, true);
string CsvString = string.Join(",", CsvList.ToArray());
streamWriter.WriteLine(CsvString);
streamWriter.Close();
Console.WriteLine("File saved as " + fileName);
i++;
}
试试看
{
连接=新的IDB2连接(connectionString);
connection.Open();
command=newIDB2command(commandString,connection);
reader=command.ExecuteReader();
var dt=新数据表();
dt.负载(读卡器);
List CsvList=新列表();
foreach(数据行中的数据行)
{
foreach(row.ItemArray中的var项)
{
CsvList.Add(item.ToString());
}
如果(i==1)
{
CsvList.添加(“”);
CsvList.Add(“客户服务”);
CsvList.Add(“客户服务代表”+“\r”);
//\r和\n不工作
}
}
System.IO.StreamWriter StreamWriter;
streamWriter=new System.IO.streamWriter(文件名,true);
string CsvString=string.Join(“,”,CsvList.ToArray());
streamWriter.WriteLine(CsvString);
streamWriter.Close();
Console.WriteLine(“文件另存为”+文件名);
i++;
}
如果你只是建立一个行列表,而不是一个单一值的扁平列表,那会容易得多。例如,由于在使用Join
时已经将列表展平,因此在换行符值后添加逗号
而是将每行的值连接在一起,然后只跟踪整行:
foreach (DataRow row in dt.Rows)
{
CsvList.Add(string.Join(",", row.ItemArray));
}
现在您已经有了行列表,我们可以使用File.AppendAllLines
简单方便地将所有行写到文件末尾:
File.AppendAllLines(fileName, CsvList);
或者,如果您希望将结果流式传输到文件中,而不是将所有数据复制到列表中并同时保存在内存中,则可以执行以下操作:
var lines = dt.AsEnumerable()
.Select(row => string.Join(",", row.ItemArray));
File.AppendAllLines(fileName, lines);
如果你只是建立一个行的列表,而不是一个单一值的扁平列表,这将是非常容易的。例如,由于在使用
Join
时已经将列表展平,因此在换行符值后添加逗号
而是将每行的值连接在一起,然后只跟踪整行:
foreach (DataRow row in dt.Rows)
{
CsvList.Add(string.Join(",", row.ItemArray));
}
现在您已经有了行列表,我们可以使用File.AppendAllLines
简单方便地将所有行写到文件末尾:
File.AppendAllLines(fileName, CsvList);
或者,如果您希望将结果流式传输到文件中,而不是将所有数据复制到列表中并同时保存在内存中,则可以执行以下操作:
var lines = dt.AsEnumerable()
.Select(row => string.Join(",", row.ItemArray));
File.AppendAllLines(fileName, lines);
使用
StringBuilder
,一次提交一行,而不是自己创建数组和处理添加新行:
var sb = new StringBuilder();
foreach (DataRow row in dt.Rows)
{
List<string> csvList = new List<string>();
foreach (var item in row.ItemArray)
{
csvList.Add(item.ToString());
}
if (i == 1)
{
csvList.Add(" ");
csvList.Add("Customer Service");
csvList.Add("Customer Service Representative");
}
sb.WriteLine(string.Join(",", csvList));
}
System.IO.StreamWriter streamWriter;
streamWriter = new System.IO.StreamWriter(fileName, true);
streamWriter.WriteLine(sb.ToString());
streamWriter.Close();
Console.WriteLine("File saved as " + fileName);
var sb=new StringBuilder();
foreach(数据行中的数据行)
{
List csvList=新列表();
foreach(row.ItemArray中的var项)
{
csvList.Add(item.ToString());
}
如果(i==1)
{
csvList.添加(“”);
csvList.Add(“客户服务”);
csvList.Add(“客户服务代表”);
}
sb.WriteLine(string.Join(“,”,csvList));
}
System.IO.StreamWriter StreamWriter;
streamWriter=new System.IO.streamWriter(文件名,true);
streamWriter.WriteLine(sb.ToString());
streamWriter.Close();
Console.WriteLine(“文件另存为”+文件名);
不要自己创建数组和处理添加新行的操作,而是使用StringBuilder
,一次提交一行:
var sb = new StringBuilder();
foreach (DataRow row in dt.Rows)
{
List<string> csvList = new List<string>();
foreach (var item in row.ItemArray)
{
csvList.Add(item.ToString());
}
if (i == 1)
{
csvList.Add(" ");
csvList.Add("Customer Service");
csvList.Add("Customer Service Representative");
}
sb.WriteLine(string.Join(",", csvList));
}
System.IO.StreamWriter streamWriter;
streamWriter = new System.IO.StreamWriter(fileName, true);
streamWriter.WriteLine(sb.ToString());
streamWriter.Close();
Console.WriteLine("File saved as " + fileName);
var sb=new StringBuilder();
foreach(数据行中的数据行)
{
List csvList=新列表();
foreach(row.ItemArray中的var项)
{
csvList.Add(item.ToString());
}
如果(i==1)
{
csvList.添加(“”);
csvList.Add(“客户服务”);
csvList.Add(“客户服务代表”);
}
sb.WriteLine(string.Join(“,”,csvList));
}
System.IO.StreamWriter StreamWriter;
streamWriter=new System.IO.streamWriter(文件名,true);
streamWriter.WriteLine(sb.ToString());
streamWriter.Close();
Console.WriteLine(“文件另存为”+文件名);
让你的生活更轻松,使用字符串。加入
和环境。换行符
@gunr2171他正在使用加入
,只是不正确…让你的生活更轻松,使用字符串。加入
和环境。换行符
@gunr2171他正在使用加入
,只是不正确…很好的快捷方式加入了ItemArray
@ChrisMantle好吧,这是我自己写了好几次的代码。只需要找出如何添加一些硬编码的值。感谢您的帮助。@DouglasBubbletrousers您只需添加.Concat(新[]{“a”,“b”})
即可Concat
项目数组的一些值。.Concat(新[]{“a”,“b”})