C#Csv实现基本的读写和转换DataTable

介绍

C#是一种面向对象的编程语言,广泛应用于Microsoft的.NET平台。在C#中,可以使用各种技术和库来处理各种数据格式,包括CSV(逗号分隔值)文件。CSV文件是一种常见的数据格式,通常用于存储表格数据。本文将介绍如何使用C#读取和写入CSV文件,以及如何将CSV数据转换为DataTable。

读取CSV文件

读取CSV文件可以使用C#的StreamReader类。以下是一个简单的示例,展示了如何读取CSV文件并将其存储到List>中:

using System;

using System.Collections.Generic;

using System.IO;

class Program

{

static void Main()

{

List> csvData = new List>();

using (StreamReader reader = new StreamReader("data.csv"))

{

string line;

while ((line = reader.ReadLine()) != null)

{

List rowData = new List();

rowData.AddRange(line.Split(','));

csvData.Add(rowData);

}

}

foreach (List row in csvData)

{

foreach (string cell in row)

{

Console.Write(cell + "\t");

}

Console.WriteLine();

}

}

}

在上面的示例中,我们使用StreamReader类打开CSV文件,然后按行读取文件内容。每行通过使用Split(',')方法将逗号分割的数据拆分为单独的单元格,然后将其添加到List中。最后,我们遍历csvData列表,打印csv文件中的数据。

写入CSV文件

要将数据写入CSV文件,我们可以使用C#的StreamWriter类。以下是一个示例,演示如何将数据从DataTable写入CSV文件中:

using System;

using System.Data;

using System.IO;

class Program

{

static void Main()

{

// Create a sample DataTable

DataTable dataTable = new DataTable();

dataTable.Columns.Add("Name");

dataTable.Columns.Add("Age");

dataTable.Columns.Add("City");

dataTable.Rows.Add("John Doe", "30", "New York");

dataTable.Rows.Add("Jane Smith", "25", "London");

dataTable.Rows.Add("Bob Johnson", "35", "Paris");

using (StreamWriter writer = new StreamWriter("data.csv"))

{

// Write the headers

writer.WriteLine("Name,Age,City");

// Write the data

foreach (DataRow row in dataTable.Rows)

{

writer.WriteLine($"{row["Name"]},{row["Age"]},{row["City"]}");

}

}

}

}

在上面的示例中,我们首先创建了一个DataTable对象,并为其添加了列和行。然后,我们使用StreamWriter类创建一个新的CSV文件,并将文件头写入文件中。接下来,我们遍历DataTable的行,并将每行的数据以逗号分隔的形式写入文件中。

将CSV转换为DataTable

将CSV数据转换为DataTable可以使用C#的DataTable类。以下是一个示例,演示如何将CSV文件读取到DataTable中:

using System;

using System.Data;

using System.IO;

class Program

{

static void Main()

{

DataTable dataTable = new DataTable();

using (StreamReader reader = new StreamReader("data.csv"))

{

string line;

bool isFirstRow = true;

while ((line = reader.ReadLine()) != null)

{

string[] values = line.Split(',');

if (isFirstRow)

{

foreach (string value in values)

{

dataTable.Columns.Add(value);

}

isFirstRow = false;

}

else

{

dataTable.Rows.Add(values);

}

}

}

// Print the DataTable

foreach (DataRow row in dataTable.Rows)

{

foreach (var item in row.ItemArray)

{

Console.Write(item + "\t");

}

Console.WriteLine();

}

}

}

在上面的示例中,我们使用StreamReader类读取CSV文件的内容。我们首先将每行数据以逗号分隔的形式拆分为单独的值,并通过检查isFirstRow变量来确定是否为文件头行。如果是文件头行,我们将值添加到DataTable的列中。否则,我们将值添加到DataTable的行中。最后,我们遍历DataTable并打印其内容。

总结

本文介绍了在C#中实现基本的CSV文件读写和将CSV数据转换为DataTable的方法。通过使用StreamReader和StreamWriter类,我们可以轻松地读取和写入CSV文件。通过将CSV数据拆分为单元格并将其存储到List或DataTable中,我们可以更方便地处理和操作CSV数据。无论是从CSV文件中读取数据,还是将数据写入CSV文件,C#提供了简单而强大的工具来处理CSV数据。

后端开发标签