C#实现读写CSV文件的方法详解

C#实现读写CSV文件的方法详解

CSV文件是一种常见的数据存储格式,通常用来存储表格数据。在C#中,我们可以使用以下方法来读写CSV文件。

读取CSV文件

1.通过第三方库CsvHelper读取CSV文件

  1. 首先,你需要安装CsvHelper库,可以使用NuGet包管理器或者手动安装。
  2. 在程序中添加以下代码:
using CsvHelper;
using System.IO;

// 打开CSV文件
using var reader = new StreamReader("path/to/csv/file");
using var csv = new CsvReader(reader, CultureInfo.InvariantCulture);

// 读取CSV文件
var records = csv.GetRecords<YourModel>();

// 遍历记录
foreach(var record in records)
{
    // 处理每一行记录
}
  1. 示例代码中YourModel是你定义的CSV数据模型类,它应该包含CSV文件中每行数据的字段。例如,如果CSV文件中每行数据包含idname两个字段,那么可以定义一个类如下:
public class Record
{
    public int Id { get; set; }
    public string Name { get; set; }
}
  1. CsvHelper会读取CSV文件的每一行数据,并将其映射到你定义的YourModel类中。你可以通过遍历records集合来访问每一条记录。

2.通过.NET内置类库读取CSV文件

  1. 使用StreamReader打开CSV文件。
  2. 逐行读取CSV数据,并使用逗号进行分隔。
  3. 处理每一行数据。
using System.IO;

var records = new List<YourModel>();
using (var reader = new StreamReader("path/to/csv/file"))
{
    while (!reader.EndOfStream)
    {
        var line = reader.ReadLine();
        var values = line.Split(',');
        var record = new YourModel
        {
            Field1 = values[0],
            Field2 = values[1],
            // ...
        };
        records.Add(record);
    }
}

写入CSV文件

1.通过第三方库CsvHelper写入CSV文件

  1. 先安装CsvHelper库。
  2. 在程序中添加以下代码:
using CsvHelper;
using System.IO;

var records = new List<YourModel>();
// 添加数据到列表中...

using var writer = new StreamWriter("path/to/csv/file");
using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);

csv.WriteRecords(records);
  1. CsvHelper会将数据写入CSV文件中。

2.通过.NET内置类库写入CSV文件

  1. 打开CSV文件,使用StreamWriter对象写入数据。在写入每行数据时,要注意数据格式,必须使用逗号进行分隔。
using System.IO;

using (var writer = new StreamWriter("path/to/csv/file"))
{
    foreach (var record in records)
    {
        writer.Write(record.Field1);
        writer.Write(",");
        writer.Write(record.Field2);
        writer.Write(",");
        // ...
        writer.WriteLine();
    }
}
  1. 写入完成后,关闭文件流。

示例

以下是一个读取CSV文件的完整示例:

using CsvHelper;
using System.Collections.Generic;
using System.Globalization;
using System.IO;

public class Record
{
    public int Id { get; set; }
    public string Name { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        using var reader = new StreamReader("path/to/csv/file");
        using var csv = new CsvReader(reader, CultureInfo.InvariantCulture);

        var records = csv.GetRecords<Record>();

        foreach (var record in records)
        {
            Console.WriteLine($"{record.Id}, {record.Name}");
        }
    }
}

以下是一个写入CSV文件的完整示例:

using CsvHelper;
using System.Collections.Generic;
using System.Globalization;
using System.IO;

public class Record
{
    public int Id { get; set; }
    public string Name { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        var records = new List<Record>
        {
            new Record { Id = 1, Name = "John" },
            new Record { Id = 2, Name = "Jane" },
            // ...
        };

        using var writer = new StreamWriter("path/to/csv/file");
        using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);

        csv.WriteRecords(records);
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现读写CSV文件的方法详解 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • C#实现字符串进制转换方法汇总

    C#实现字符串进制转换方法汇总 介绍 在C#中,我们经常需要进行字符串进制转换的操作。例如将十六进制字符串转换为十进制数字,或者将二进制字符串转换为十进制数字等等。本文将介绍几种实现字符串进制转换的方法。 实现方法 方法一:Convert.ToInt32方法 Convert.ToInt32方法可以将字符串转换为指定进制的数字。该方法的语法如下: Conver…

    C# 2023年6月8日
    00
  • C#将Unicode编码转换为汉字字符串的简单方法

    下面我将详细讲解“C#将Unicode编码转换为汉字字符串的简单方法”的完整攻略。 需求描述 在C#开发中,我们可能会遇到将Unicode编码转换成汉字字符串的需求。例如,我们从后端传递一个包含Unicode编码的字符串,前端需要将其转换成汉字显示出来。 解决方法 C#自带了对Unicode编码的解析和转换工具,我们可以直接使用System.Text.Reg…

    C# 2023年6月8日
    00
  • 解析xHTML源码的DLL组件AngleSharp介绍

    解析xHTML源码的DLL组件AngleSharp介绍 什么是AngleSharp AngleSharp是一个用C#编写的.net标准库,可以解析HTML、SVG和MathML等文件格式。AngleSharp可以帮助我们将一个XHTML格式的文档解析成一个DOM树,方便我们在代码中对文档的各个元素进行操作。 AngleSharp 的安装与使用 AngleSh…

    C# 2023年5月31日
    00
  • C#笔试题之同线程Lock语句递归不会死锁

    当同一线程中出现递归的Lock语句时,如果没有特殊的处理,就可能导致死锁。这是因为Lock语句在执行前会获取锁,并在执行完毕后释放锁,如果在获取锁之后又执行了同一个Lock语句,就会导致锁无法释放,进而导致死锁。 解决这个问题的方法是利用Monitor.Enter和Monitor.Exit方法,进行锁的操作。其中,Monitor.Enter方法获取锁,如果已…

    C# 2023年6月7日
    00
  • C# 如何判断两个文件内容是否相同的方法

    要判断两个文件的内容是否相同,可以通过计算两个文件的哈希值(hash)来进行比较。哈希值是数据的固定长度的数字表示,可以用于判断数据是否一致。 在C#中,可以使用System.Security.Cryptography命名空间中的MD5或SHA256等哈希算法计算文件的哈希值,并进行比较。 下面是一个使用MD5算法计算文件哈希值的示例代码: using Sy…

    C# 2023年6月7日
    00
  • C#实现操作windows系统服务(service)的方法

    C#实现操作Windows系统服务的方法,可以通过以下几个步骤来完成: 引入System.ServiceProcess命名空间 在代码文件中,使用以下代码引入System.ServiceProcess命名空间: using System.ServiceProcess; 创建服务的控制器类 public partial class Service1 : Ser…

    C# 2023年6月6日
    00
  • C#实现XML文件与DataTable、Dataset互转

    下面我为您详细讲解C#实现XML文件与DataTable、Dataset互转的完整攻略。 转换DataTable为XML文件 在C#中将DataTable转换为XML文件非常简单,我们可以通过DataTable的WriteXml方法来实现转换。该方法用于把DataTable中的数据写入到XML文件中,并可在需要时指定XML文件的路径及名称。具体的示例代码如下…

    C# 2023年5月31日
    00
  • .Net Winform开发笔记(四)透过现象看本质

    接下来我将详细讲解“.Net Winform开发笔记(四)透过现象看本质”的完整攻略。 攻略概述 本篇攻略主要介绍如何透过现象看本质进行Winform开发,内容分为三个部分: 理解Winform的本质: 认识Winform的结构 理解Winform的生命周期 常用Winform控件的本质: 理解各种Winform控件的特点和用途 能够选择正确的控件实现需要的…

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