在C#中,我们可以使用System.IO
命名空间提供的类和方法来操作CSV(逗号分隔值)文件。以下是一个通用的CSV文件操作类的示例代码,详细说明了如何实现常见的读取和写入CSV文件的功能。
C#public class CsvFile
{
private string filePath;
private char delimiter;
public CsvFile(string filePath, char delimiter = ',')
{
this.filePath = filePath;
this.delimiter = delimiter;
}
public List<string[]> ReadAll(System.Text.Encoding encoding)
{
List<string[]> data = new List<string[]>();
try
{
using (StreamReader reader = new StreamReader(filePath, encoding)
{
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
string[] values = line.Split(delimiter);
data.Add(values);
}
}
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
return data;
}
public void WriteAll(List<string[]> data)
{
try
{
using (StreamWriter writer = new StreamWriter(filePath))
{
foreach (string[] values in data)
{
string line = string.Join(delimiter.ToString(), values);
writer.WriteLine(line);
}
}
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}
}
上述代码定义了一个CsvFile
类,用于读取和写入CSV文件。构造函数接受文件路径和可选的分隔符参数,默认为逗号。ReadAll
方法读取整个CSV文件并返回一个包含每行数据的List<string[]>
对象。WriteAll
方法将给定的数据写入CSV文件。
C#static void Main(string[] args)
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
string filePath = "D:\\BaiduSyncdisk\\11Test\\测试导入数据.csv";
CsvFile csvFile = new CsvFile(filePath);
// 读取CSV文件,中文时可能需要用到GB2312
List<string[]> data = csvFile.ReadAll(Encoding.GetEncoding("GB2312"));
foreach (string[] values in data)
{
Console.WriteLine(string.Join(", ", values));
}
filePath = "D:\\BaiduSyncdisk\\11Test\\test.csv";
csvFile = new CsvFile(filePath);
// 写入CSV文件
List<string[]> newData = new List<string[]>
{
new string[] { "John", "Doe", "john.doe@example.com" },
new string[] { "Jane", "Smith", "jane.smith@example.com" }
};
csvFile.WriteAll(newData);
}
如是需要用Gb2312在Core下需要先安装以下包
上述代码演示了如何使用CsvFile
类来读取和写入CSV文件。首先,我们创建一个CsvFile
对象并指定CSV文件的路径。然后,我们使用ReadAll
方法读取CSV文件的内容,并通过WriteLine
方法打印出每行数据。接下来,我们创建一个新的数据列表newData
,并使用WriteAll
方法将其写入CSV文件。
本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!