【发布时间】:2025-12-11 22:40:01
【问题描述】:
是否有任何形式的语句可以将数据行转换为 CSV 行,以便将其写入 .csv 文件? (中间有或没有步骤)
【问题讨论】:
-
你有没有看过这个问题Writing a CSV file in .net(特别是this answer),在这个问题和Linq to DataSets的these examples之间,你可能可以用不到10行代码编写导出。跨度>
是否有任何形式的语句可以将数据行转换为 CSV 行,以便将其写入 .csv 文件? (中间有或没有步骤)
【问题讨论】:
试试下面的代码:
StringBuilder sb = new StringBuilder();
var columnNames = dt.Columns.Cast<DataColumn>().Select(column => column.ColumnName).ToArray();
sb.AppendLine(string.Join(",", columnNames));
foreach (DataRow row in dt.Rows)
{
var fields = row.ItemArray.Select(field => field.ToString()).ToArray();
sb.AppendLine(string.Join(",", fields));
}
File.WriteAllText("test.csv", sb.ToString());
【讨论】:
以下内容对我有用。
foreach (DataRow row in rows)
{
string line = "";
for (int i = 0; i < row.ItemArray.Length; i++)
{
line += row[i] + ",";
}
line = line.TrimEnd(',');
}
【讨论】:
快速的 Google 搜索发现了这一点: http://www.rcs-solutions.com/blog/2009/01/15/ConvertDataTableToCSVViaExtensionMethod.aspx
有点过时了。没有本地方法可以做到这一点,因此您需要使用循环结构迭代数据表,但我建议使用 LINQ 方法,因为它会更干净。
【讨论】:
前几天我在看this:
根据快速入门,您可以编写如下代码:
[DelimitedRecord(",")]
public class Customer
{
public int CustId;
public string Name;
public decimal Balance;
}
FileHelperEngine engine = new FileHelperEngine(typeof(Customer));
Customer[] res = engine.ReadFile("FileIn.txt") as Customer[];
engine.WriteFile("FileOut.txt", res);
【讨论】: