c# 读写CSV文件,datatable相互转换CSV文件
时间: 2023-08-20 09:05:11 浏览: 173
下面是 C# 中读写 CSV 文件并使用 `DataTable` 相互转换的示例代码:
```csharp
using System;
using System.Data;
using System.IO;
class Program
{
static void Main(string[] args)
{
// 读取 CSV 文件到 DataTable
DataTable dataTable = new DataTable();
using (var reader = new StreamReader(@"C:\data.csv"))
{
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(',');
// 第一行数据作为列名
if (dataTable.Columns.Count == 0)
{
foreach (var value in values)
{
dataTable.Columns.Add(value.Trim());
}
}
else
{
// 处理每行数据
DataRow row = dataTable.NewRow();
for (int i = 0; i < values.Length; i++)
{
row[i] = values[i].Trim();
}
dataTable.Rows.Add(row);
}
}
}
// 将 DataTable 写入 CSV 文件
using (var writer = new StreamWriter(@"C:\output.csv"))
{
// 写入列名
for (int i = 0; i < dataTable.Columns.Count; i++)
{
writer.Write(dataTable.Columns[i]);
if (i < dataTable.Columns.Count - 1)
{
writer.Write(",");
}
}
writer.WriteLine();
// 写入数据
foreach (DataRow row in dataTable.Rows)
{
for (int i = 0; i < dataTable.Columns.Count; i++)
{
writer.Write(row[i].ToString());
if (i < dataTable.Columns.Count - 1)
{
writer.Write(",");
}
}
writer.WriteLine();
}
}
Console.WriteLine("CSV 文件读取和写入完成!");
}
}
```
在这个示例代码中,我们使用 `StreamReader` 类来读取指定路径下的 CSV 文件,使用 `DataTable` 类来保存读取到的数据,同时将其转换为 `DataTable` 对象。我们遍历读取到的每行数据,并将第一行数据作为列名,将每行数据添加到 `DataTable` 中。接着我们使用 `StreamWriter` 类来创建一个新的 CSV 文件,并将 `DataTable` 对象中的数据写入到文件中。最后,程序输出一条消息表示 CSV 文件操作完成。
如果需要在程序中使用 `DataTable` 对象进行数据处理,可以使用以下代码将 `DataTable` 转换为 CSV 文件:
```csharp
// 将 DataTable 写入 CSV 文件
using (var writer = new StreamWriter(@"C:\output.csv"))
{
// 写入列名
for (int i = 0; i < dataTable.Columns.Count; i++)
{
writer.Write(dataTable.Columns[i]);
if (i < dataTable.Columns.Count - 1)
{
writer.Write(",");
}
}
writer.WriteLine();
// 写入数据
foreach (DataRow row in dataTable.Rows)
{
for (int i = 0; i < dataTable.Columns.Count; i++)
{
writer.Write(row[i].ToString());
if (i < dataTable.Columns.Count - 1)
{
writer.Write(",");
}
}
writer.WriteLine();
}
}
```
这段代码将 `DataTable` 的列名和每行数据写入到 CSV 文件中。