c语言编程笔录

首页 > C语言 > c语言

c语言

一个读写csv文件的C#类

更新时间:2023-08-11

需求背景:

在许多软件开发项目中,读写csv文件是一项常见的任务。CSV(Comma Separated Values)文件是一种纯文本文件格式,其中数据以逗号分隔并以行为单位。由于CSV文件易于创建和编辑,并且可以被多种应用程序和编程语言解析,因此广泛应用于数据交换和导入/导出任务。

设计思路:

根据需求,我们需要设计一个C#类来实现读写CSV文件的功能。这个类应该能够读取CSV文件的内容,并将其解析为数据结构,也能将数据结构写入到CSV文件中。为了实现这一目标,我们可以使用C#中的StreamReader和StreamWriter类,配合正则表达式和字符串操作,来完成CSV文件的读写操作。

代码实现:

using System;
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;

public class CsvFile
{
    // 读取CSV文件内容并返回数据结构
    public List> ReadCsv(string filePath)
    {
        List> data = new List>();
        using (StreamReader reader = new StreamReader(filePath))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                List rowData = new List();
                string[] values = Regex.Split(line, ",(?=(?:[^\\\"]*\\\"[^\\\"]*\\\")*(?![^\\\"]*\\\"))");
                foreach (string value in values)
                {
                    rowData.Add(value.Trim('"'));
                }
                data.Add(rowData);
            }
        }
        return data;
    }

    // 将数据结构写入CSV文件
    public void WriteCsv(string filePath, List> data)
    {
        using (StreamWriter writer = new StreamWriter(filePath))
        {
            foreach (List rowData in data)
            {
                string line = string.Join(",", rowData.Select(value => "\"" + value + "\""));
                writer.WriteLine(line);
            }
        }
    }
}

代码解释:

上面是一个用C#实现读写CSV文件的类的示例。该类包含两个方法:ReadCsv用于读取CSV文件并返回数据结构,WriteCsv用于将数据结构写入CSV文件。

在ReadCsv方法中,我们使用StreamReader来读取CSV文件的每一行,然后使用正则表达式和字符串操作将一行数据解析为一个字符串列表。最后将每一行的列表添加到数据结构中,并返回整个数据结构。

在WriteCsv方法中,我们使用StreamWriter来逐行将数据结构写入CSV文件。对于每一行的列表,我们将其中的每个字符串加上引号,并使用逗号连接起来,然后将整行写入文件中。

总结:

通过以上代码,我们实现了一个读写CSV文件的C#类。通过ReadCsv方法,我们可以将CSV文件中的数据解析为一个数据结构,方便后续的数据处理和分析。而通过WriteCsv方法,我们可以将一个数据结构以CSV格式写入文件,方便存储和共享数据。这个类可以作为一个工具类在C#项目中使用,简化读写CSV文件的操作。