gpt4 book ai didi

c# - CSV 换行符

转载 作者:太空宇宙 更新时间:2023-11-03 20:12:20 29 4
gpt4 key购买 nike

我正在从数据库值构建一个 csv 文件。当我在 excel 中打开 csv 时,所有内容都在一行中。为了解决这个问题,我在每一行之后添加了 \n\r。现在,当我在 Excel 中从第二行开始打开时,第一列的其余部分都是空值。

即:

value 1, value 2, value 3
, value 1, value 2, value 3
, value 1, value 2, value 3
, value 1, value 2, value 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++;
}

最佳答案

如果您只是构建一个 列表,而不是单个值的扁平化列表,那将会容易得多。例如,由于您在使用 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);

关于c# - CSV 换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19253607/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com