一个读写csv文件的C#类

下面是一个读写CSV文件的C#类的完整攻略。

需求分析

我们需要一个能够读取和写入CSV文件的C#类,使得我们能够方便地在程序中进行CSV文件的读写操作。

设计思路

我们的CSV文件读写类需要实现以下功能:
1. 读取CSV文件
2. 写入CSV文件
3. 支持设置CSV文件的分隔符

我们可以使用C#中的StreamReader和StreamWriter类来实现CSV文件的读写操作,在写入CSV文件时,需要注意分隔符的问题。

代码实现

首先,我们需要定义一个CSVFile类,然后在这个类中实现读取和写入CSV文件的方法。具体代码如下:

using System.IO;

public class CSVFile
{
    private const char DEFAULT_DELIMITER = ',';
    public char Delimiter { get; set; }

    public CSVFile(char delimiter = DEFAULT_DELIMITER)
    {
        Delimiter = delimiter;
    }

    public string[,] Read(string path)
    {
        string[] lines = File.ReadAllLines(path);
        int rows = lines.Length;
        int cols = lines[0].Split(Delimiter).Length;
        string[,] values = new string[rows, cols];

        for (int i = 0; i < rows; i++)
        {
            string[] lineValues = lines[i].Split(Delimiter);
            for (int j = 0; j < cols; j++)
            {
                values[i, j] = lineValues[j];
            }
        }

        return values;
    }

    public void Write(string path, string[,] values)
    {
        int rows = values.GetLength(0);
        int cols = values.GetLength(1);

        using (StreamWriter sw = new StreamWriter(path))
        {
            for (int i = 0; i < rows; i++)
            {
                for (int j = 0; j < cols; j++)
                {
                    sw.Write(values[i, j]);
                    if (j < cols - 1)
                    {
                        sw.Write(Delimiter);
                    }
                }
                sw.WriteLine();
            }
        }
    }
}

在这个代码中,我们定义了一个CSVFile类,它有一个Delimiter属性用于设置CSV文件的分隔符(默认为逗号)。接下来,我们分别实现Read和Write方法来读取和写入CSV文件。

在Read方法中,我们使用File.ReadAllLines方法来将CSV文件中的所有行读取到一个字符串数组中。然后,我们根据CSV文件的第一行推断出CSV文件中的列数,并创建一个二维字符串数组用于存储CSV文件中的数据。接下来,我们遍历每一行和每一列,将CSV文件中的数据存储到二维字符串数组中。

在Write方法中,我们使用StreamWriter类来向CSV文件中写入数据。首先,我们获得二维字符串数组中的行数和列数,并使用StreamWriter的Write方法向CSV文件中写入每行数据。在每行数据的末尾,我们加入分隔符,除了最后一列之外。最后,我们使用StreamWriter的WriteLine方法向CSV文件中写入换行符。

示例说明

下面是两个示例来说明CSVFile类的使用方法。

示例1:读取CSV文件

假设我们有一个students.csv文件,它的内容如下:

name,age,score
Tom,18,80
Jerry,19,85
Emily,20,90

我们可以使用如下代码来读取这个CSV文件:

string path = "students.csv";
CSVFile csv = new CSVFile();
string[,] values = csv.Read(path);

int rows = values.GetLength(0);
int cols = values.GetLength(1);
for (int i = 0; i < rows; i++)
{
    for (int j = 0; j < cols; j++)
    {
        Console.Write(values[i, j] + "\t");
    }
    Console.WriteLine();
}

这段代码会输出以下内容:

name    age     score
Tom     18      80
Jerry   19      85
Emily   20      90

示例2:写入CSV文件

我们可以使用如下代码来创建一个二维字符串数组,并将它写入到students_new.csv文件中:

string path = "students_new.csv";
CSVFile csv = new CSVFile();

string[,] values = new string[3, 3];
values[0, 0] = "name";
values[0, 1] = "age";
values[0, 2] = "score";
values[1, 0] = "Mike";
values[1, 1] = "22";
values[1, 2] = "88";
values[2, 0] = "Lisa";
values[2, 1] = "23";
values[2, 2] = "95";

csv.Write(path, values);

这段代码将创建一个students_new.csv文件,并将以下内容写入到这个文件中:

name,age,score
Mike,22,88
Lisa,23,95

这就是CSVFile类的使用方法,它可以帮助我们方便地读写CSV文件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一个读写csv文件的C#类 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • 学习Winform分组类控件(Panel、groupBox、TabControl)

    学习Winform分组类控件是Winform桌面应用程序开发的基础知识之一。分组类控件包括Panel、groupBox和TabControl等,可以将窗体内的控件进行分组,方便用户的操作和管理。 1. Panel控件 Panel控件是Winform中最基本的分组类控件,可作为容器承载其他控件。下面是Panel控件的一些常用属性: Dock:控制Panel控件…

    C# 2023年6月7日
    00
  • C# ManagementObjectSearcher操作window案例详解

    C#ManagementObjectSearcher操作window案例详解 简介 在Windows开发中,我们通常需要通过WMI(Windows Management Instrumentation)编程方式来获取或者修改Windows系统的信息,如获取进程、服务、系统配置等信息。System.Management是.Net Framework中专门用于W…

    C# 2023年5月15日
    00
  • C#控制台程序输出等腰三角形并居中显示实例

    创建控制台应用程序项目 首先,打开Visual Studio 2019,在首页面中选择“创建新项目”,选择“Visual C#”->“控制台应用程序”,并输入项目名称,点击“创建”按钮即可创建一个新的控制台应用程序项目。 编写输出等腰三角形的代码 在Main方法中编写输出等腰三角形的代码。我们可以用循环来实现这个功能,其中外层循环控制输出的行数,内层循…

    C# 2023年6月7日
    00
  • 基于C#编写经理评分系统

    基于C#编写经理评分系统攻略 系统简介 经理评分系统是一种基于评测流程的评分系统,可以用来对员工的工作表现进行评分,作为考核绩效的依据。本系统基于C#编写,采用MVC架构,前端使用Bootstrap框架。 系统流程 登录/注册 用户输入用户名和密码,进行登录或者注册。 创建评分表单 登录后进入创建评分表单页面,用户可以定义评分项、评分标准等。 分配工作任务 …

    C# 2023年6月7日
    00
  • Asp.net treeview实现无限级树实现代码

    下面是关于”Asp.net TreeView实现无限级树实现代码”的完整攻略。 介绍 TreeView是Asp.net Web Forms中常用的一种控件,可以用于构建树形结构的网页菜单或目录。本文将介绍如何使用TreeView控件实现无限级树形菜单,并提供两个示例说明。 步骤 1. 准备数据源 为了构建无限级树形菜单,我们需要一个能够支持无限级别嵌套的数据…

    C# 2023年5月31日
    00
  • FTP 550 Permission denied 只能建文件夹,没法删除及上传文件的原因说明

    问题说明: 当尝试在FTP上上传或删除文件时,会出现”FTP 550 Permission denied” 错误消息,并且只能建立文件夹而不能上传或删除文件。 攻略: 检查FTP账户权限 首先应该检查FTP账户的权限,确认该账户是否拥有上传、删除文件的权限。在FTP服务器上,可能会出现FTP账户的权限被禁用或限制,因此要确保FTP账户的权限正确设置,以便上传…

    C# 2023年5月31日
    00
  • c#方法中调用参数的值传递方式和引用传递方式以及ref与out的区别深入解析

    请参考以下攻略: 什么是值传递和引用传递 在 C# 中,方法通过参数来接收外部传入的值,参数可以使用值传递或引用传递的方式进行传递。 值传递是传递值类型参数的方式,即方法接收的参数是原始值的副本,不影响原始值,例如基本类型 int、char、bool 等和结构体。 引用传递是传递引用类型参数的方式,即方法接收的参数是原始值的引用,会影响到原始值,例如数组、类…

    C# 2023年5月15日
    00
  • 为HttpClient开启HTTP/2

    .Net Core在调用其他服务时,调用通常使用HttpClient,而HttpClient默认使用HTTP/1.1 。     配置 HttpClient 以使用 HTTP/2 h2 连接 自 .NET Core 3.0 发布以来, .NET 开发人员可以使用 HttpClient 启用 HTTP/2 。   设置 HTTP/2 的方法 DefaultRe…

    C# 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部