IRONSOFTWAREHOME
USING IRONXL

Reading CSV Files in C#: a Tutorial

Curtis Chau
Curtis Chau
Updated: 2026年6月28日

使用各种 Excel 格式通常需要读取数据,然后以编程方式重新配置数据。 在本文中,我们将学习如何使用 IronXL(一款非常适合这项工作的工具)在 C# 中读取 CSV 文件并解析 Excel 电子表格中的数据。

什么是CSV?

CSV 是一种简单的数据格式,但可能存在很多差异; 在我们的 C# 项目中,以编程方式读取数据可能很困难,因为它使用多个分隔符来区分数据的行和列。 本文将向您展示如何使用IronXL 库读取 CSV 文件。


1. How to read a CSV File in C#

在 MVC、ASP.NET 或 .NET Core 中使用 IronXL 读取 CSV 文件之前,您需要先安装它。 以下是简要介绍。

  1. 在 Visual Studio 中,选择"项目"菜单
  2. 管理 NuGet 程序包
  3. 搜索 IronXL.Excel
  4. 安装

在C#中读取CSV文件:教程,图1:在Visual Studio的NuGet包管理器中搜索IronXL 在 Visual Studio 的 NuGet 包管理器中搜索 IronXL

当您需要在 C# 中读取 CSV 文件时,IronXL 是完美的工具。 您可以读取以逗号或其他任何分隔符分隔的 CSV 文件,如下面的代码片段所示。

// Load a CSV file and interpret it as an Excel-like workbook
WorkBook workbook = WorkBook.LoadCSV("Weather.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");

// Access the default worksheet in the workbook
WorkSheet ws = workbook.DefaultWorkSheet;

// Save the workbook to a new Excel file
workbook.SaveAs("Csv_To_Excel.xlsx");

输出:

在C#中读取CSV文件:教程,图2:以逗号分隔符输出CSV文件 输出以逗号分隔的 CSV 文件

代码解释:

创建了一个WorkBook对象。 然后使用LoadCSV方法指定CSV的名称、格式以及在读取CSV文件时使用的分隔符。 在这种情况下,逗号用作分隔符。

接着创建了一个WorkSheet对象。 这里将放置 CSV 文件的内容。 文件将以新名称和新格式保存。

在C#中读取CSV文件:教程,图3:在Microsoft Excel中显示的数据 在 Microsoft Excel 中显示的数据


2. IronXL for Excel 文件

在您的项目中使用 IronXL,它是一种在 C# 中处理 Excel 文件格式的简化方法。 你可以通过直接下载的方式安装 IronXL 。 或者,您可以使用适用于 Visual Studio 的 NuGet Install 。 该软件可免费用于开发。

dotnet add package IronXL.Excel

3. 加载WorkSheet

WorkBook是IronXL的类,其对象提供对Excel文件及其所有功能的完全访问。 例如,如果我们想访问一个 Excel 文件,我们可以使用以下代码:

// Load the Excel file
WorkBook wb = WorkBook.Load("sample.xlsx"); // Excel file path

IronXL提供了WorkSheet类来访问Excel文件的特定工作表。

// Access a specific worksheet by name
WorkSheet ws = wb.GetWorkSheet("Sheet1"); // by sheet name

一旦您获得了Excel工作表ws,就可以从中提取任何类型的数据,并执行所有Excel功能。 可以通过此过程从Excel工作表ws中访问数据:

using IronXL;

class Program
{
    static void Main(string[] args)
    {
        // Load the workbook and access a specific worksheet
        WorkBook wb = WorkBook.Load("sample.xlsx");
        WorkSheet ws = wb.GetWorkSheet("Sheet1");

        // Iterate through a range of cells and display their values
        foreach (var cell in ws["A2:A10"])
        {
            Console.WriteLine("Value is: {0}", cell.Text);
        }
        Console.ReadKey();
    }
}

4. 将 Excel 工作表读取为数据表

使用IronXL,将ExcelWorkSheet作为DataTable进行操作非常简单。

DataTable dt = ws.ToDataTable(true); // Converts the worksheet to a DataTable, using the first row as column names

请使用以下命名空间:

using IronXL;
using System.Data;

写下以下代码:

class Program
{
    static void Main(string[] args)
    {
        // Load the workbook and access a specific worksheet
        WorkBook wb = WorkBook.Load("Weather.xlsx"); // Your Excel file Name
        WorkSheet ws = wb.GetWorkSheet("Sheet1");

        // Parse worksheet into datatable
        DataTable dt = ws.ToDataTable(true); // Parse Sheet1 of sample.xlsx file into DataTable

        // Iterate through rows and columns to display their values
        foreach (DataRow row in dt.Rows) // Access rows
        {
            for (int i = 0; i < dt.Columns.Count; i++) // Access columns of corresponding row
            {
                Console.Write(row[i] + "  ");
            }
            Console.WriteLine();
        }
    }
}

在C#中读取CSV文件:教程,图4:来自DataTable对象的控制台输出 来自 DataTable 对象的控制台输出

在此示例中,我们将看看如何将Excel文件用作DataSet

class Program
{
    static void Main(string[] args)
    {
        // Load the workbook and convert it to a DataSet
        WorkBook wb = WorkBook.Load("sample.xlsx");
        DataSet ds = wb.ToDataSet(); // Parse WorkBook wb into DataSet

        // Iterate through tables to display their names
        foreach (DataTable dt in ds.Tables)
        {
            Console.WriteLine(dt.TableName);
        }
    }
}

在C#中读取CSV文件:教程,图5:从DataSet对象访问工作表名称 从数据集对象中访问工作表名称

让我们来看另一个例子,了解如何访问所有 Excel 工作表中每个单元格的值。 在这里,我们可以访问 Excel 文件中每个工作表的每个单元格的值。

class Program
{
    static void Main(string[] args)
    {
        // Load the workbook and convert it to a DataSet
        WorkBook wb = WorkBook.Load("Weather.xlsx");
        DataSet ds = wb.ToDataSet(); // Treat the complete Excel file as DataSet

        // Iterate through each table and its rows and columns
        foreach (DataTable dt in ds.Tables) // Treat Excel WorkSheet as DataTable
        {
            foreach (DataRow row in dt.Rows) // Corresponding Sheet's Rows
            {
                for (int i = 0; i < dt.Columns.Count; i++) // Sheet columns of corresponding row
                {
                    Console.Write(row[i] + "  ");
                }
                Console.WriteLine();
            }
        }
    }
}

在C#中读取CSV文件:教程,图6:Dataset对象的控制台输出 数据集对象的控制台输出

5. 在C# .NET中解析CSV

CSV 文件在字段中处理换行符的方式上存在大量问题,或者字段可能包含在引号中,从而完全阻止简单的字符串拆分方法。 我最近在C# .NET中转换CSV时发现了以下选项,可以指定一个可自定义的分隔符,而不是使用string.Split(',')用逗号分隔值。

6. 在C#记录中读取CSV数据

此过程会将读取器切换到下一个文件。我们在 TryGetField 中读取 CSV 字段文件。 我们使用读取函数读取 CSV 文件中的字段作为记录字段。

// Load a CSV file, specify the file format and delimiter
WorkBook workbook = WorkBook.LoadCSV("Weather.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");

// Access the default worksheet from the workbook
WorkSheet ws = workbook.DefaultWorkSheet;

// Convert worksheet to DataTable    
DataTable dt = ws.ToDataTable(true); // Parse Sheet1 of sample.xlsx file into DataTable

// Iterate through rows and columns to display their values
foreach (DataRow row in dt.Rows) // Access rows
{
    for (int i = 0; i < dt.Columns.Count; i++) // Access columns of corresponding row
    {
        Console.Write(row[i] + "  ");
    }
    Console.WriteLine();
}

在C#中读取CSV文件:教程,图7:来自DataTable的控制台输出 数据表的控制台输出

7. 从 Excel 文件中获取数据

现在我们可以通过各种方法轻松从打开的ExcelWorkSheet中获取任何类型的数据。 在以下示例中,我们可以看到如何访问特定单元格的值并将其解析为string

// Access the data by cell addressing
string val = ws["Cell Address"].ToString();

在上面的行中,WorkSheet,它在步骤2中定义。这是"简单的方法",但您可以阅读更多并查看不同的示例访问Excel文件数据

8. How to Parse Excel Files in C#

在使用 Excel 电子表格进行应用程序构建时,我们经常需要根据数据分析结果,并且需要在 C# 中将 Excel 文件数据解析为所需的格式才能获得正确的结果。 在 C# 环境中,使用 IronXL 可以轻松地将数据解析成不同的格式; 请参阅以下步骤。

using IronXL;

class Program
{
    static void Main(string[] args)
    {
        // Load the workbook and access a specific worksheet
        WorkBook wb = WorkBook.Load("sample.xlsx");
        WorkSheet ws = wb.GetWorkSheet("Sheet1");

        // Parse Excel cell value into string
        string str_val = ws["B3"].Value.ToString();

        // Parse Excel cell value into Int32
        Int32 int32_val = ws["G3"].Int32Value;

        // Parse Excel cell value into Decimal
        decimal decimal_val = ws["E5"].DecimalValue;

        // Output parsed values to the console
        Console.WriteLine("Parse B3 Cell Value into String: {0}", str_val);
        Console.WriteLine("Parse G3 Cell Value into Int32: {0}", int32_val);
        Console.WriteLine("Parse E5 Cell Value into decimal: {0}", decimal_val);

        Console.ReadKey();
    }
}

9. 如何将Excel数据解析为数值和布尔值

现在我们来学习如何解析Excel文件数据。 首先,我们来看看如何处理 Excel 中的数值数据,然后看看如何将其解析成我们所需的格式。

在C#中读取CSV文件:教程,图8:每种数据类型的汇总表 每种数据类型的汇总表

class Program
{
    static void Main(string[] args)
    {
        // Load the workbook and access a specific worksheet
        WorkBook wb = WorkBook.Load("sample.xlsx");
        WorkSheet ws = wb.GetWorkSheet("Sheet1");

        // Parse Excel cell value into string
        string str_val = ws["B3"].Value.ToString();

        // Parse Excel cell value into Int32
        Int32 int32_val = ws["G3"].Int32Value;

        // Parse Excel cell value into Decimal
        decimal decimal_val = ws["E5"].DecimalValue;

        // Output parsed values to the console
        Console.WriteLine("Parse B3 Cell Value into String: {0}", str_val);
        Console.WriteLine("Parse G3 Cell Value into Int32: {0}", int32_val);
        Console.WriteLine("Parse E5 Cell Value into decimal: {0}", decimal_val);

        Console.ReadKey();
    }
}

这段代码将显示以下输出:

在C#中读取CSV文件:教程,图9:具有正确数据类型的控制台输出 控制台输出包含正确的数据类型

我们可以在这里看到Excel文件sample.xlsx的值:

在C#中读取CSV文件:教程,图10:在Excel中显示正确的数据类型 在 Excel 中显示正确的数据类型

为了将Excel文件数据解析为布尔数据类型,IronXL提供了BoolValue功能。 它的用法如下:

// Access a cell value as a boolean
bool Val = ws["Cell Address"].BoolValue;

10. 如何将Excel文件解析为C#集合

class Program
{
    static void Main(string[] args)
    {
        // Load the workbook and access a specific worksheet
        WorkBook wb = WorkBook.Load("sample.xlsx");
        WorkSheet ws = wb.GetWorkSheet("Sheet1");

        // Convert a range into an array
        var array = ws["B6:F6"].ToArray();

        // Get the count of items in the array
        int item = array.Count();

        // Get the first item as a string
        string total_items = array[0].Value.ToString();

        // Output information about the array to the console
        Console.WriteLine("First item in the array: {0}", item);
        Console.WriteLine("Total items from B6 to F6: {0}", total_items);

        Console.ReadKey();
    }
}

10.1 如何将ExcelWorkSheet解析为DataTable

IronXL的一个出色功能是我们可以轻松地将特定的ExcelWorkSheet转换为DataTable。 为此目的,我们可以使用IronXL的.ToDataTable()功能,如下所示:

class Program
{
    static void Main(string[] args)
    {
        // Load the workbook and access a specific worksheet
        WorkBook wb = WorkBook.Load("sample.xlsx");
        WorkSheet ws = wb.GetWorkSheet("Sheet1");

        // Parse Sheet1 of sample.xlsx file into DataTable
        // Setting 'true' makes the first row in Excel as the column names in DataTable
        DataTable dt = ws.ToDataTable(true);
    }
}

10.2 如何将 Excel 文件解析为数据集

如果我们想将完整的Excel文件解析为DataSet,那我们可以使用IronXL中的.ToDataSet()函数。

class Program
{
    static void Main(string[] args)
    {
        // Load an entire workbook into a DataSet
        WorkBook wb = WorkBook.Load("sample.xlsx");

        // Convert workbook to DataSet
        DataSet ds = wb.ToDataSet();

        // We can also get a DataTable from the DataSet which corresponds to a WorkSheet
        DataTable dt = ds.Tables[0];
    }
}

10.3 读取特定范围内的 Excel 数据

IronXL 提供了一种智能方法来读取特定范围内的 Excel 文件数据。 该范围可以应用于行和列。

class Program
{
    static void Main(string[] args)
    {
        // Load the workbook and access a specific worksheet
        WorkBook wb = WorkBook.Load("sample.xlsx");
        WorkSheet ws = wb.GetWorkSheet("Sheet1");

        // Get specified range values by loop
        foreach (var item in ws["B3:B8"])
        {
            Console.WriteLine("Value is: {0}", item);
        }
        Console.ReadKey();
    }
}

上述代码显示以下输出:

在C#中读取CSV文件:教程,图11:访问范围B3:B8的所有值的控制台输出 控制台输出以访问 B3:B8 范围内的所有值

并生成 Excel 文件 sample.xlsx 中的值:

在C#中读取CSV文件:教程,图12:来自sample.xlsx的数据展示 示例文件 sample.xlsx 的数据显示

此外,IronXL 还兼容许多 Excel 方法,可用于与单元格交互,包括样式和边框数学函数条件格式或根据可用数据创建图表。

11. 如何读取 Excel 文件中的布尔数据

在应用程序开发中,我们需要根据 Excel 文件中的布尔数据类型做出决策。

class Program
{
    static void Main(string[] args)
    {
        // Load the workbook and access a specific worksheet
        WorkBook wb = WorkBook.Load("sample.xlsx");
        WorkSheet ws = wb.GetWorkSheet("Sheet1");
        
        // Traverse a range and output boolean values
        foreach (var item in ws["G1:G10"])
        {
            Console.WriteLine("Condition is: {0}", item.BoolValue);
        }
        Console.ReadKey();
    }
}

由此,我们得到以下输出:

在C#中读取CSV文件:教程,图13:获取布尔数据的控制台输出 获取布尔数据时的控制台输出

Excel 文件 sample.xlsx,其中包含 C1 到 C10 的值:

在C#中读取CSV文件:教程,图14:用于与控制台输出比较的Excel示例 用于与控制台输出进行比较的 Excel 示例

12. 如何阅读完整的Excel工作表

利用行和列索引可以轻松读取完整的 Excel 工作表。 为此,我们使用两个循环:一个用于遍历所有行,另一个用于遍历特定行的所有列。 这样我们就可以轻松获取整个 Excel 工作表中所有单元格的值。

class Program
{
    static void Main(string[] args)
    {
        // Load the workbook and access a specific worksheet
        WorkBook wb = WorkBook.Load("Weather.xlsx"); // Your Excel File Name
        WorkSheet ws = wb.GetWorkSheet("Sheet1");

        // Traverse all rows of Excel WorkSheet
        for (int i = 0; i < ws.Rows.Count(); i++)
        {
            // Traverse all columns of specific Row
            for (int j = 0; j < ws.Columns.Count(); j++)
            {
                // Get the values
                string val = ws.Rows[i].Columns[j].Value.ToString();
                Console.WriteLine("Value of Row {0} and Column {1} is: {2}", i, j, val);
            }
        }
        Console.ReadKey();
    }
}

在C#中读取CSV文件:教程,图15:读取所有值后的控制台输出 读取所有值的控制台输出

13. 如何在不使用互操作的情况下读取 Excel 文件

IronXL 是一个适用于 C# 和 .NET 的 Excel 库,它允许开发人员无需使用 Microsoft.Office.Interop.Excel 即可XLS 和 XLSX文档读取和编辑 Excel 数据。

该 API 使我们能够直观地创建、读取、操作、保存和导出 Excel 文件,用于:

  1. .NET Framework 4.5+
  2. .NET Core 2+
  3. .NET Standard
  4. Xamarin
  5. Windows Mobile
  6. 单声道
  7. 和 Azure 云托管
  8. Blazor
  9. .NET MAUI

添加以下命名空间:

using IronXL;
using System;
using System.Linq;

现在在主函数中编写以下代码。

class Program
{
    static void Main(string[] args)
    {
        // Load an Excel file and access the first worksheet
        WorkBook workbook = WorkBook.Load("Weather.xlsx");
        WorkSheet sheet = workbook.WorkSheets.First();

        // Select cells easily in Excel notation and return the calculated value
        int cellValue = sheet["A2"].IntValue;

        // Read from ranges of cells elegantly
        foreach (var cell in sheet["A2:A10"])
        {
            Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
        }
    }
}

在C#中读取CSV文件:教程,图16:来自每个单元格的控制台输出 每个单元格的控制台输出

IronXL 还完全支持 ASP.NET、MVC、Windows、macOS、Linux、iOS 和 Android 移动应用程序开发。

14. 结论和IronXL特别优惠

除了在 C# 中解析 CSV 文件外,IronXL 只需两行代码即可将 CSV 文件转换为 Excel 文件! using C# 或 VB.NET,无需互操作即可轻松使用 IronXL 的 Excel API。您可以读取、编辑和创建 Excel 电子表格,或处理其他 Excel 格式,例如XLS/XLSX/CSV/TSV 。 借助多种框架的支持,您可以花两件产品的价格购买五件产品。 点击我们的定价页面了解更多信息。

在C#中读取CSV文件:教程,图17:Iron Suite的5个产品 Iron Suite 的 5 款产品

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

...
阅读更多

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户