一个读写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日

相关文章

  • C#中ManualResetEvent用法总结

    下面将为您详细讲解C#中ManualResetEvent用法总结的完整攻略。 什么是ManualResetEvent? ManualResetEvent是System.Threading命名空间中的一个类,是用于线程同步的一种工具。它可以让线程之间进行信号通讯,实现线程之间的同步和互斥。通常情况下,ManualResetEvent作为线程协调的一种机制,可以…

    C# 2023年6月6日
    00
  • C# Lambda表达式及Lambda表达式树的创建过程

    让我们来详细讲解一下C# Lambda表达式及Lambda表达式树的创建过程。 什么是Lambda表达式 Lambda表达式是C# 3.0引入的一种新的语言特性,它是一种可创建委托或表达式树类型的匿名函数。可以将Lambda表达式看作一个简短的函数,它没有名称,但它可以被赋值给委托类型或表达式树类型。 Lambda表达式的基本语法格式如下: (paramet…

    C# 2023年5月31日
    00
  • C#实现计算器精简版

    C#实现计算器精简版攻略 前言 计算器是很多编程语言学习者在学习过程中不可绕过的一个经典的练手项目。本文将详细介绍如何使用C#语言实现一个简单的计算器。 知识储备 在实现本文中的计算器之前,您需要掌握以下C#相关知识: 基本的变量声明 基本的运算符使用 控制流程(如if语句、switch语句) 文本框和按钮控件的基本使用 实现步骤 第一步:创建UI界面 在V…

    C# 2023年6月1日
    00
  • iis支持asp.net4.0的注册命令使用方法

    IIS(Internet Information Services)是一种Web服务器,它可以托管ASP.NET应用程序。在IIS中,我们需要使用注册命令来注册ASP.NET版本。本文将提供详解“iis支持asp.net4.0的注册命令使用方法”的完整攻略,包括如何使用注册命令注册ASP.NET 4.0版本、如何在IIS中配置ASP.NET 4.0应用程序池…

    C# 2023年5月15日
    00
  • C#实现绘制鼠标的示例代码

    下面是“C#实现绘制鼠标的示例代码”的完整攻略: 1. 准备工作 在开始编写代码之前,需要安装好Visual Studio并打开一个新的C#项目。可以选择Windows Form App或者Console App等应用类型,具体根据需要而定。接下来可以按照下面的步骤来实现绘制鼠标的功能。 2. 引用命名空间 在代码文件的顶部引用System.Drawing命…

    C# 2023年6月6日
    00
  • c#斐波那契数列(Fibonacci)(递归,非递归)实现代码

    C#中可以使用递归和非递归两种方式实现斐波那契数列。 一、递归实现代码 递归实现斐波那契数列比较简单,代码如下: public static int Fibonacci_Recursive(int n) { if (n <= 0) { return 0; } if (n == 1 || n == 2) { return 1; } return Fibo…

    C# 2023年5月31日
    00
  • asp.net中水印的具体实现代码

    实现 ASP.NET 中水印的具体步骤如下: 步骤1:在页面中引用 JavaScript 和 CSS 文件 首先,在页面头部引用以下两个文件: <link rel="stylesheet" type="text/css" href="watermark.css" /> <scrip…

    C# 2023年5月31日
    00
  • 鼠标右击事件代码(asp.net后台)

    鼠标右击事件是指用户在网页中使用鼠标右键时,触发的相关事件。在ASP.NET后台中,我们可以使用C#或VB.NET编写代码来处理鼠标右击事件。下面是一些详细的攻略和示例: 在页面中注册鼠标右击事件 我们可以通过JavaScript代码,在页面启动时注册鼠标右击事件,代码如下: <script type="text/javascript&quo…

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