一个读写csv文件的C#类

yizhihongxing

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

相关文章

  • 在 asp.net core 的中间件中返回具体的页面的实现方法

    在 ASP.NET Core 中,中间件是处理 HTTP 请求和响应的组件,可以是任何处理这些请求和响应的代码。在中间件中返回具体的页面,通常需要借助于 ASP.NET Core MVC 中的视图引擎和控制器。下面是具体的实现方法。 步骤1:添加 MVC 中间件服务 首先,需要在 ASP.NET Core 应用程序中添加 MVC 中间件服务。在 Startu…

    C# 2023年5月31日
    00
  • asp.net Md5的用法小结

    下面是关于 ASP.NET Md5 的用法的完整攻略。 什么是 Md5 Md5 是一种密码(或者叫散列)算法,用来对任意长度的数据进行加密,生成一个唯一的固定长度(128 位)的 Hash 值。因为 Md5 生成的 Hash 值几乎不会重复,因此在密码验证、防篡改等场景中被广泛应用。 Asp.net Md5 的使用方式 Asp.net 提供了 System.…

    C# 2023年5月31日
    00
  • c# 网络编程之tcp

    C# 网络编程之TCP TCP是传输控制协议,是一种无连接的、可靠的、基于字节流的传输协议,它能够在网络上确保数据的可靠传输。在C#/.NET中,我们可以使用System.Net.Sockets命名空间下的TcpClient和TcpListener类来实现TCP网络编程。 TCP客户端 连接服务器 要建立一个TCP连接,需要指定服务器的IP地址和端口号,并使…

    C# 2023年5月31日
    00
  • Python3.10和Python3.9版本之间的差异介绍

    Python3.10和Python3.9版本之间的差异介绍 Python 3.10是Python编程语言的最新版本,它相对于Python 3.9有一些新特性和改进,下面我们来具体介绍一下它们之间的不同点。 新特性 parenthesized context managers in comprehensions 在Python 3.10中,可以在列表解析、生成…

    C# 2023年6月7日
    00
  • .net中前台javascript与后台c#函数相互调用问题

    在.NET开发中,我们经常需要在前台JavaScript中调用后台C#函数或者从后台C#函数里面操作前台JavaScript,下面我将提供几种方法供参考。 方法一:在前台JavaScript中调用后台C#函数 方式一:使用PageMethods PageMethods是.NET 2.0中提供的一个在前端页面中调用后端方法的机制。可以通过添加 System.W…

    C# 2023年5月31日
    00
  • C#实现一个控制台的点餐系统

    C#实现一个控制台的点餐系统完整攻略 需求分析 点餐系统需要实现以下功能: 展示菜单 输入点餐内容和数量 确认订单及计算总价 退出程序 设计实现 数据结构 点餐系统需要用到的数据结构有: 菜品类别 Category 菜品类 Dish 菜单类 Menu 订单类 Order 具体定义如下: // 菜品类别 public enum Category { 饮料, 小…

    C# 2023年6月7日
    00
  • C#中委托的进一步理解

    在C#中,委托是一种特殊的类型,它是一种可以存储对其他方法的引用(或类似指针的实体),并且可以调用这些方法的对象。委托可以像一般函数一样调用,并且在函数调用时会自动通知它所负责的所有方法去执行。 在C#中,委托可以用来实现回调机制,将一个委托对象作为参数传递给另一个函数,这样,当另一个函数完成任务后,就可以调用这个委托来通知回调函数。 委托属于引用类型,它可…

    C# 2023年6月6日
    00
  • Asp.net core前端框架Blazor介绍

    Blazor 是一个使用 C# 和 Razor 语法构建现代 Web 应用程序的开源框架。它允许开发人员使用 C# 语言编写客户端代码,而无需使用 JavaScript。以下是 Asp.net core 前端框架 Blazor 的详细介绍: Blazor 的工作原理 Blazor 的工作原理是将 C# 代码编译成 WebAssembly,然后在浏览器中运行。…

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