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 数据,并将其应用于实际场景中。
附加资源
练习
- 编写一个程序,读取一个包含学生信息的 CSV 文件,并计算每个学生的平均成绩。
- 使用
CsvHelper
编写一个程序,将一组产品数据导出为 CSV 文件。
通过完成这些练习,您将更好地掌握 C# 中的 CSV 文件处理技巧。