跳過到頁腳內容
使用 IRONXL

使用 C# 讀取 CSV 文件(代碼範例教程)

此教程展示如何使用 IronXL C# 库读取 CSV 文件,而无需安装其他互操作,以高效的方式实现。

class="hsg-featured-snippet">

如何逐行读取 C# 中的 CSV 文件

  1. 安装读取逐行 CSV 文件的 C# 库
  2. 利用高级LoadCSV方法读取 CSV 文件
  3. 使用 C# 中的Exists方法捕获加载不存在的文件
  4. 使用ToDataTable方法将 CSV 数据转换为数据库
  5. 使用SaveAs方法导出 Excel 文件,同时 CSV 数据会自动转换为 Excel

如何在 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 文件並選擇其位置(.xlsx)。 如果工作簿有工作表,您可以通过以下方式按名称获取它们:

// 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 无需 Interop,十分轻松。 Furthermore, IronXL also offers a wide range of features to interact with Excel WorkBook, WorkSheet and Cells level such as converting between popular formats, cell data formatting, merging cells, inserting math functions, and even managing charts and adding images.

您可以使用IronXL 试用版许可证密钥启动而无水印。

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

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

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

常見問題解答

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

您可以在 C# 中使用 IronXL 庫通過使用 LoadCSV 方法讀取 CSV 文件,該方法允許您將 CSV 數據加載到 WorkBook 對象以供進一步操作。

在 C# 中將 CSV 數據轉換為 Excel 格式的最佳方式是什麼?

在 C# 中將 CSV 數據轉換為 Excel 格式的最佳方式是使用 IronXL。將您的 CSV 加載到 WorkBook 對象中,然後使用 SaveAs 方法將其保存為 Excel 文件。

如何在 C# 中使用庫處理具有自定義分隔符的 CSV 文件?

使用 IronXL,您可以通過在 LoadCSV 方法中指定分隔符作為可選參數來處理具有自定義分隔符的 CSV 文件。

我可以直接將 CSV 數據轉換為 C# 的數據庫格式嗎?

是的,您可以在 C# 中使用 IronXL 通過使用 ToDataTable 方法將 CSV 數據轉換為數據庫格式,該方法將數據轉換為適合數據庫操作的 DataTable 對象。

有哪些方法可用於使用 C# 檢查不存在的 CSV 文件?

在 C# 中,您可以使用 IronXL 的 Exists 方法在嘗試加載前檢查 CSV 文件是否存在,從而避免與不存在文件相關的錯誤。

在 C# 中將 CSV 轉換為 Excel 後,我如何操作 Excel 數據?

在 C# 中將 CSV 轉換為 Excel 後,您可以使用 IronXL 的功能操作數據,例如格式化、合併單元格、插入數學函數以及添加圖表或圖像。

IronXL 在 C# 中讀取和轉換 CSV 文件有哪些優勢?

IronXL 提供的優勢包括安裝簡便、無需其他 interop、自定義分隔符支持,以及在 Excel 中轉換和操作 CSV 數據的強大方法。

在 C# 中如何處理 CSV 數據中的特殊字符?

IronXL 能夠通過在加載 CSV 文件時允許您指定文件編碼和分隔符來處理 CSV 數據中的特殊字符,從而確保數據的完整性和準確性。

IronXL 用戶有哪些支持可用?

IronXL 許可證包括一年免費支持和更新,提供幫助並確保您擁有最新功能和修補。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。