跳到主要内容

C# CSV 文件处理

CSV(Comma-Separated Values)文件是一种常见的文件格式,用于存储表格数据。每行代表一条记录,字段之间用逗号分隔。C# 提供了多种方法来处理 CSV 文件,本文将逐步介绍如何读取、写入和操作 CSV 数据。

什么是 CSV 文件?

CSV 文件是一种纯文本文件,用于存储表格数据。每行代表一条记录,字段之间用逗号分隔。例如:

plaintext
Name,Age,Location
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago

在这个例子中,第一行是标题行,后面的每一行都是数据记录。

读取 CSV 文件

在 C# 中,可以使用 StreamReader 类来读取 CSV 文件。以下是一个简单的示例:

csharp
using System;
using System.IO;

class Program
{
static void Main()
{
string filePath = "data.csv";
using (StreamReader reader = new StreamReader(filePath))
{
string line;
while ((line = reader.ReadLine()) != null)
{
string[] values = line.Split(',');
foreach (string value in values)
{
Console.Write(value + " ");
}
Console.WriteLine();
}
}
}
}

输入文件 data.csv

plaintext
Name,Age,Location
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago

输出:

plaintext
Name Age Location 
Alice 30 New York
Bob 25 Los Angeles
Charlie 35 Chicago
备注

在实际应用中,可能需要处理更复杂的 CSV 文件,例如包含引号或转义字符的字段。可以使用第三方库如 CsvHelper 来简化这些操作。

写入 CSV 文件

要写入 CSV 文件,可以使用 StreamWriter 类。以下是一个简单的示例:

csharp
using System;
using System.IO;

class Program
{
static void Main()
{
string filePath = "output.csv";
using (StreamWriter writer = new StreamWriter(filePath))
{
writer.WriteLine("Name,Age,Location");
writer.WriteLine("Alice,30,New York");
writer.WriteLine("Bob,25,Los Angeles");
writer.WriteLine("Charlie,35,Chicago");
}
}
}

输出文件 output.csv

plaintext
Name,Age,Location
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago
提示

在写入 CSV 文件时,确保正确处理包含逗号或换行符的字段。可以使用双引号将字段括起来。

使用第三方库 CsvHelper

CsvHelper 是一个流行的第三方库,用于简化 CSV 文件的读写操作。以下是一个使用 CsvHelper 读取 CSV 文件的示例:

csharp
using System;
using System.Collections.Generic;
using CsvHelper;
using System.Globalization;
using System.IO;

class Program
{
static void Main()
{
string filePath = "data.csv";
using (var reader = new StreamReader(filePath))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
var records = csv.GetRecords<Person>();
foreach (var record in records)
{
Console.WriteLine($"{record.Name}, {record.Age}, {record.Location}");
}
}
}
}

public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Location { get; set; }
}

输入文件 data.csv

plaintext
Name,Age,Location
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago

输出:

plaintext
Alice, 30, New York
Bob, 25, Los Angeles
Charlie, 35, Chicago
警告

在使用第三方库时,确保通过 NuGet 包管理器安装 CsvHelper 库。

实际应用场景

CSV 文件常用于数据导入导出、数据交换和数据分析。例如,一个电子商务网站可能需要将订单数据导出为 CSV 文件,以便在 Excel 中进行分析。

示例:导出订单数据

csharp
using System;
using System.Collections.Generic;
using CsvHelper;
using System.Globalization;
using System.IO;

class Program
{
static void Main()
{
var orders = new List<Order>
{
new Order { OrderId = 1, CustomerName = "Alice", Amount = 100.50 },
new Order { OrderId = 2, CustomerName = "Bob", Amount = 200.75 },
new Order { OrderId = 3, CustomerName = "Charlie", Amount = 300.25 }
};

string filePath = "orders.csv";
using (var writer = new StreamWriter(filePath))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
csv.WriteRecords(orders);
}
}
}

public class Order
{
public int OrderId { get; set; }
public string CustomerName { get; set; }
public double Amount { get; set; }
}

输出文件 orders.csv

plaintext
OrderId,CustomerName,Amount
1,Alice,100.5
2,Bob,200.75
3,Charlie,300.25

总结

本文介绍了如何在 C# 中处理 CSV 文件,包括读取、写入和使用第三方库 CsvHelper。通过这些方法,您可以轻松地处理 CSV 数据,并将其应用于实际场景中。

附加资源

练习

  1. 编写一个程序,读取一个包含学生信息的 CSV 文件,并计算每个学生的平均成绩。
  2. 使用 CsvHelper 编写一个程序,将一组产品数据导出为 CSV 文件。

通过完成这些练习,您将更好地掌握 C# 中的 CSV 文件处理技巧。