跳至页脚内容
使用 IRONXL

使用 C# 读取 CSV 文件(代码示例教程)

本教程演示了如何使用IronXL C#库在不安装其他互操作的情况下高效、有效地读取CSV文件。

如何在C#中读取CSV文件

您必须先安装IronXL,才能在MVC、ASP.NET或.NET Core中使用它读取CSV文件。 这是该过程的基本概述。

在Visual Studio中选择项目菜单,管理NuGet包,并搜索IronXL.Excel,然后安装。

使用C#读取CSV文件(代码示例教程),图1:在NuGet包管理器中安装IronXL包 在NuGet包管理器中安装IronXL包

IronXL是在C#中读取CSV文件时一个很好的工具。 下面的代码示例显示您可以使用逗号或其他分隔符读取CSV文件。

// Load a CSV file into a WorkBook object specifying file format and delimiters
WorkBook workbook = WorkBook.LoadCSV("Weather.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");

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

// Save the workbook as an Excel file
workbook.SaveAs("Csv_To_Excel.xlsx");
// Load a CSV file into a WorkBook object specifying file format and delimiters
WorkBook workbook = WorkBook.LoadCSV("Weather.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");

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

// Save the workbook as an Excel file
workbook.SaveAs("Csv_To_Excel.xlsx");
' Load a CSV file into a WorkBook object specifying file format and delimiters
Dim workbook As WorkBook = WorkBook.LoadCSV("Weather.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")

' Get the default worksheet from the workbook
Dim ws As WorkSheet = workbook.DefaultWorkSheet

' Save the workbook as an Excel file
workbook.SaveAs("Csv_To_Excel.xlsx")
$vbLabelText   $csharpLabel

使用C#读取CSV文件(代码示例教程),图2:本教程的CSV数据 本教程的CSV数据

创建了对象WorkBook。 然后使用WorkBook对象的LoadCSV方法来指示CSV文件的名称、格式和正在读取的CSV文件中使用的分隔符,它们作为字符串数组存储。 在此场景中使用逗号作为分隔符。

之后,创建了一个WorkSheet对象; 这就是CSV文件内容将被存储的地方。 然后将文件重命名并存储为新格式。 然后,CSV文件数据在工作表中以表格形式排列。 输出将如下所示:

使用C#读取CSV文件(代码示例教程),图3:数据转换为Excel文件 数据转换为Excel文件

C# .NET中的CSV解析

CSV在字段中处理换行符以及字段可能用引号括起来方面存在一些问题,这使得简单的字符串分割技术Split("'")无法工作。 相反,IronXL提供了使用LoadCSV方法的可选参数自定义分隔符,检查LoadCSV的API文档以获取更多详细信息。

C#记录 - 读取CSV数据

在下面的示例中,使用foreach循环遍历CSV文件中的行,并使用控制台将数据写入记录。

// Load a CSV file into a WorkBook object specifying file format and delimiters
WorkBook workbook = WorkBook.LoadCSV("Weather.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");

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

// Convert the worksheet data into a DataTable
DataTable dt = ws.ToDataTable(true); // The argument true indicates the first row is header

// Iterate through each row in the DataTable
foreach (DataRow row in dt.Rows)
{
    // Iterate through each column in the current row
    for (int i = 0; i < dt.Columns.Count; i++)
    {
        // Output each cell value to the console
        Console.Write(row[i] + "  ");
    }
    // New line after each row
    Console.WriteLine();
}
// Load a CSV file into a WorkBook object specifying file format and delimiters
WorkBook workbook = WorkBook.LoadCSV("Weather.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");

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

// Convert the worksheet data into a DataTable
DataTable dt = ws.ToDataTable(true); // The argument true indicates the first row is header

// Iterate through each row in the DataTable
foreach (DataRow row in dt.Rows)
{
    // Iterate through each column in the current row
    for (int i = 0; i < dt.Columns.Count; i++)
    {
        // Output each cell value to the console
        Console.Write(row[i] + "  ");
    }
    // New line after each row
    Console.WriteLine();
}
' Load a CSV file into a WorkBook object specifying file format and delimiters
Dim workbook As WorkBook = WorkBook.LoadCSV("Weather.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")

' Get the default worksheet from the workbook
Dim ws As WorkSheet = workbook.DefaultWorkSheet

' Convert the worksheet data into a DataTable
Dim dt As DataTable = ws.ToDataTable(True) ' The argument true indicates the first row is header

' Iterate through each row in the DataTable
For Each row As DataRow In dt.Rows
	' Iterate through each column in the current row
	For i As Integer = 0 To dt.Columns.Count - 1
		' Output each cell value to the console
		Console.Write(row(i) & "  ")
	Next i
	' New line after each row
	Console.WriteLine()
Next row
$vbLabelText   $csharpLabel

使用C#读取CSV文件(代码示例教程),图4:从CSV文件访问数据并显示在控制台中 从CSV文件访问数据并显示在控制台中

将CSV文件字符串行转换为Excel格式

过程很简单:加载CSV文件并将其保存为Excel文件。

// Load a CSV file into a WorkBook object specifying file format and delimiters
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");

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

// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
// Load a CSV file into a WorkBook object specifying file format and delimiters
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");

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

// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
' Load a CSV file into a WorkBook object specifying file format and delimiters
Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")

' Get the default worksheet from the workbook
Dim ws As WorkSheet = workbook.DefaultWorkSheet

' Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx")
$vbLabelText   $csharpLabel

使用IronXL读取和操作转换后的CSV文件

IronXL的WorkBook类表示一个Excel表,并使用此类在C#中打开Excel文件。 下面的代码示例将所需的Excel文件加载到WorkBook对象中:

// Load WorkBook from a .xlsx file
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
// Load WorkBook from a .xlsx file
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
' Load WorkBook from a .xlsx file
Dim workbook = WorkBook.Load("Spreadsheets\\sample.xlsx")
$vbLabelText   $csharpLabel

WorkSheet对象可以在多个WorkBook中找到。 这些是Excel文档的工作表。 如果工作簿有工作表,可以通过以下方法按名称获取它们:

// Open a specific worksheet for reading by its name
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
// Open a specific worksheet for reading by its name
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
' Open a specific worksheet for reading by its name
Dim worksheet = workbook.GetWorkSheet("sheetnamegoeshere")
$vbLabelText   $csharpLabel

读取单元格值的代码:

// Read and output values from a range of cells elegantly
foreach (var cell in worksheet["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Read and output values from a range of cells elegantly
foreach (var cell in worksheet["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
' Read and output values from a range of cells elegantly
For Each cell In worksheet("A2:A10")
	Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next cell
$vbLabelText   $csharpLabel

下面的代码示例可以在加载和读取工作簿和工作表后更新公式或将它们应用于特定单元格。 以下是代码:

// Set formulas for specific cells
worksheet["A1"].Formula = "Sum(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "Max(C3:C7)";

// Force recalculate all formula values in all sheets
workbook.EvaluateAll();
// Set formulas for specific cells
worksheet["A1"].Formula = "Sum(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "Max(C3:C7)";

// Force recalculate all formula values in all sheets
workbook.EvaluateAll();
' Set formulas for specific cells
worksheet("A1").Formula = "Sum(B8:C12)"
worksheet("B8").Formula = "=C9/C11"
worksheet("G30").Formula = "Max(C3:C7)"

' Force recalculate all formula values in all sheets
workbook.EvaluateAll()
$vbLabelText   $csharpLabel

结论和IronXL特别优惠

除了在C#中处理CSV外,IronXL还可以通过两行代码将CSV转换为Excel。

使用IronXL的Excel API是一种无需互操作的简单方法。 此外,IronXL还提供了丰富的功能,可以与Excel工作簿、工作表和单元级别进行交互,例如在流行格式之间转换单元格数据格式化合并单元格插入数学函数, 甚至管理图表和添加图像

您可以使用IronXL试用许可密钥启动而不带水印。

许可证起价为$799,并包括一年免费支持和更新。

IronPDF、IronXL、IronOCR、IronBarcode和IronWebscraper都是Iron Software套件的一部分。 Iron Software允许您以更低的价格购买其整个软件包。您可以以两种价格使用所有这些工具。

这绝对是一个值得探索的选项。

常见问题解答

我如何在 C# 中读取 CSV 文件?

您可以使用IronXL库在C#中读取CSV文件,使用LoadCSV方法,这允许您将CSV数据加载到WorkBook对象中以进行进一步操作。

在 C# 中将 CSV 数据转换为 Excel 格式的最佳方法是什么?

在C#中将CSV数据转换为Excel格式的最佳方法是使用IronXL。将您的CSV加载到WorkBook对象中,使用SaveAs方法将其保存为Excel文件。

如何使用库在 C# 中处理具有自定义分隔符的 CSV 文件?

使用IronXL,您可以通过在LoadCSV方法中将分隔符指定为可选参数来处理具有自定义分隔符的CSV文件。

我可以直接将 CSV 数据转换为 C# 中的数据库格式吗?

是的,您可以使用IronXL在C#中将CSV数据转换为数据库格式,利用ToDataTable方法将数据转换为适合数据库操作的DataTable对象。

在 C# 中有哪些方法可以检查不存在的 CSV 文件?

在C#中,您可以使用IronXL的Exists方法在尝试加载CSV文件之前检查CSV文件是否存在,从而避免与不存在的文件相关的错误。

在使用 C# 从 CSV 转换为 Excel 后,如何操作 Excel 数据?

在 C# 中将 CSV 转换为 Excel 后,您可以使用 IronXL 的功能来操作数据,例如格式化、合并单元格、插入数学函数以及添加图表或图像。

IronXL 读取和转换 C# 中 CSV 文件有哪些优势?

IronXL 提供的优势包括易于安装、无需额外的互操作、支持自定义分隔符,以及在 Excel 中转换和操作 CSV 数据的强大方法。

如何在 C# 中处理 CSV 数据中的特殊字符?

IronXL 可以通过允许您在加载 CSV 文件时指定文件编码和分隔符来处理 CSV 数据中的特殊字符,以确保数据的完整性和准确性。

IronXL 用户可获得哪些支持?

IronXL 许可证包括一年免费支持和更新,提供帮助并确保您获得最新的功能和修复。

Curtis Chau
技术作家

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

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。