下面是一个读写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技术站