c# csv文件按行读取
时间: 2023-11-18 15:54:31 浏览: 199
在C#中,可以使用StreamReader类来按行读取CSV文件。以下是一个简单的示例代码:
```csharp
using System.IO;
// ...
string filePath = "path/to/your/csv/file.csv";
using (StreamReader reader = new StreamReader(filePath))
{
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
// 处理每一行数据
}
}
```
在这个示例中,我们使用StreamReader类打开CSV文件并逐行读取。在while循环中,我们检查是否到达文件的末尾,如果没有,就读取下一行数据并进行处理。
需要注意的是,CSV文件中的每一行都是由逗号分隔的字段组成的。如果您需要将每一行数据拆分为字段,请使用String.Split方法。
相关问题
c#读取csv文件 按列读取分字典
在C#中,读取CSV文件并按列分割成字典,通常需要借助一些库如CsvHelper或使用`TextFieldParser`。这里我们假设已经安装了CsvHelper,这是一个方便处理CSV数据的库。
首先,确保已添加CsvHelper NuGet包:
```powershell
Install-Package CsvHelper
```
然后,我们可以按照以下步骤操作:
1. 创建一个映射类(Mapping Class),用于描述CSV字段与字典键的关系:
```csharp
public class MyDataClass
{
public string KeyColumn { get; set; } // 假设键列名为"KeyColumn"
public string ValueColumn { get; set; } // 假设值列名为"ValueColumn"
// 添加其他列的映射...
}
```
2. 读取CSV文件并转换为字典列表:
```csharp
using CsvHelper;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
List<MyDataClass> dataRows = new List<MyDataClass>();
using var reader = new StreamReader("yourfile.csv", Encoding.UTF8);
using var csv = new CsvReader(reader, CultureInfo.InvariantCulture);
csv.Configuration.HasHeaderRecord = true;
csv.Configuration.MissingFieldFound += (_, fieldInfo) => throw new Exception($"Missing required field: {fieldInfo.Field.Name}");
dataRows = csv.GetRecords<MyDataClass>().ToList();
Dictionary<string, List<string>> dictionary = dataRows.ToDictionary(
dr => dr.KeyColumn,
dr => dr.ValueColumn.Split(',')
.Select(val => val.Trim())
.ToList()
);
```
上述代码会按`KeyColumn`字段作为字典的键,`ValueColumn`字段的内容拆分成列表存储。
C# csv文件读取写入
在C#中,CSV(Comma Separated Values)文件是一种常见的数据交换格式,可以很容易地读取和写入文本文件。以下是使用C#内置的`System.IO`和`System.Text`命名空间中的类来进行操作的基本步骤:
**读取CSV文件:**
```csharp
using System;
using System.IO;
string filePath = "example.csv"; // 替换为你文件的实际路径
// 创建StreamReader实例
using (var reader = new StreamReader(filePath))
{
string line;
while ((line = reader.ReadLine()) != null)
{
// 使用Split()方法按逗号分割每一行
var values = line.Split(',');
// 现在你可以遍历values数组处理每个字段
foreach (string value in values)
{
Console.WriteLine(value);
}
}
}
```
**写入CSV文件:**
```csharp
using System;
using System.IO;
string outputFilePath = "output.csv";
string[] dataRows = { { "Name", "Age", "City" }, { "Alice", "25", "New York" }, { "Bob", "30", "Chicago" } };
// 创建StreamWriter实例
using (var writer = new StreamWriter(outputFilePath))
{
// 写入表头
writer.WriteLine(string.Join(",", dataRows[0]));
// 遍历数据行并写入
for (int i = 1; i < dataRows.Length; i++)
{
writer.WriteLine(string.Join(",", dataRows[i]));
}
}
```
阅读全文