一个读写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#实现学生模块的增删改查

    C#是一种常用的面向对象编程语言,非常适合实现学生模块的增删改查功能。下面是该功能的完整攻略: 步骤一:设计数据库 在实现学生模块之前,你需要先设计好相应的数据库。数据库中至少需要包含学生的姓名、性别、年龄和学号这4个关键信息。你可以使用SQL Server、MySQL或者SQLite等数据库管理系统。 步骤二:连接数据库 使用C#中的ADO.NET技术连接…

    C# 2023年5月31日
    00
  • C# 如何规范的写 DEBUG 输出

    当我们在开发 C# 项目时,使用调试输出信息是非常重要的一个环节,它可以帮助我们调试代码,发现问题和错误。但是,在使用 DEBUG 输出信息时,我们也需要注意规范的写法,以免给项目的后续维护发布带来问题。 下面,让我们来详细讲解C#如何规范的写DEBUG输出的完整攻略。 1. 为 DEBUG 输出选择适当的方法 在 C# 中,有多种选择可供 DEBUG 输出…

    C# 2023年6月6日
    00
  • Jquery上传插件 uploadify v3.1使用说明

    简介 uploadify是一个基于jQuery的多文件异步上传插件,可以提供灵活的文件上传功能。本文将详细介绍uploadify的使用方法和基本配置。 下载和引入 首先,需要下载uploadify插件,可以在官方网站http://www.uploadify.com/下载。下载后将js、css和swf文件放入相应目录,并在HTML文件中引入。 <link…

    C# 2023年5月31日
    00
  • C#实现String类型和json之间的相互转换功能示例

    C#实现String类型和JSON之间的相互转换功能示例 1. 前言 在现代Web开发中,常常需要将服务器数据以JSON(JavaScript Object Notation)格式传输到客户端,或者将客户端数据以JSON格式上传到服务器。同时,C#作为一门强类型的编程语言,当我们需要将JSON格式的字符串转换为C#的String类型或者反之,就需要使用到相互…

    C# 2023年5月31日
    00
  • C#:使用ffmpeg将图片合并成视频

      最近遇到公司的一个项目,需要将多张图片合并成一个播放的视频,找了很多资料和尝试了工具,遇到很多的坑,这里记下来,希望大家也能顺利解决遇到的问题。   合并视频,主要可以借用OpenCV 和 ffmpeg,这里是尝试用ffmpeg.exe的工具去实现图片文件合并成视频。   输入存储视频文件的路径,通过ProcessStartInfo 调用ffmpeg.e…

    C# 2023年4月30日
    00
  • AngularJS服务service用法总结

    AngularJS服务service用法总结 AngularJS是一个流行的前端框架,它提供了许多可重用的组件,包括服务(service)。服务是一个函数或对象,它可以被注入到控制器、指令等其他组件中,提供更多的功能和行为。在本文中,我们将深入探讨AngularJS中的服务(service)用法。 创建服务 要创建一个服务,我们可以使用AngularJS提供…

    C# 2023年6月1日
    00
  • C#调用RabbitMQ实现消息队列的示例代码

    下面我会给出详细讲解“C#调用RabbitMQ实现消息队列”的完整攻略,其中包含两条示例代码。具体请见下文: 什么是RabbitMQ? RabbitMQ是一个开源的消息中间件,它采用的AMQP协议为应用程序提供可靠的异步消息传输。 RabbitMQ的优势 使用RabbitMQ可以将消息发送给一个或多个接收者,并使用消息队列保存等待处理的消息。这种方式有下面的…

    C# 2023年5月15日
    00
  • C# Math中常用数学运算的示例详解

    下面是“C# Math中常用数学运算的示例详解”的完整攻略: 1. C# Math库概述 C# 中的 Math 类提供了一些基本的数学运算方法和常量。可以通过该类来进行一些数值运算,比如三角函数、指数函数、对数函数、绝对值、平方根、取整等,其它还有一些常用方法。下面是 Math 类中一些常用的方法和常量: 常量:π 和 e,可以通过 Math.PI 和 Ma…

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