c#如何实现合并一个文件夹中所有的csv文件(格式都一样)拼接为一个csv文件,要求生成的csv文件跟源文件的格式一样
时间: 2024-09-06 19:04:09 浏览: 90
在 C# 中,可以使用 `System.IO` 和 `CsvHelper` 库来合并CSV文件。首先需要安装 CsvHelper 库,如果你还没有安装,可以在 NuGet 包管理器中搜索并安装 "CsvHelper"。
以下是一个简单的步骤和示例代码来实现这个功能:
1. 引入所需的库:
```csharp
using System;
using System.Collections.Generic;
using System.IO;
using CsvHelper;
using CsvHelper.Configuration;
```
2. 创建一个自定义的 CSV 类型列配置器,用于保持原始数据格式不变:
```csharp
public class CustomCsvConfiguration : CsvClassMap<YourDataType>
{
public CustomCsvConfiguration()
{
Map(x => x.Column1).Name("Column1");
// 添加其他字段映射,如果有的话
}
}
```
这里假设 `YourDataType` 是你的CSV数据模型类。
3. 定义一个方法来读取目录中的所有CSV文件并合并它们:
```csharp
private static string MergeCsvFiles(string sourceFolder)
{
List<YourDataType> records = new List<YourDataType>();
string[] csvFiles = Directory.GetFiles(sourceFolder, "*.csv");
foreach (string filePath in csvFiles)
{
using var reader = new StreamReader(filePath);
using var csv = new CsvReader(reader, new CustomCsvConfiguration());
records.AddRange(csv.GetRecords<YourDataType>());
}
// 将所有记录写入一个新的CSV文件
using var writer = new StreamWriter("merged.csv");
using var csvWriter = new CsvWriter(writer, CultureInfo.InvariantCulture);
csvWriter.WriteRecords(records);
return $"Merged file 'merged.csv' has been created.";
}
```
在这个例子中,你需要替换 `YourDataType` 为你的CSV文件的数据模型类名,并提供适当的字段映射。运行此方法后,它会将指定文件夹中的所有CSV文件合并到一个名为 "merged.csv" 的新文件中,保留原始格式。
阅读全文