使用IRONXL

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

雷根·彭
雷根·彭
2022年六月29日
更新 2024年一月29日
分享:

本教程演示了如何使用 IronXL C# 库读取 CSV 文件,而无需安装额外的互操作程序,并且效率高、效果好。

如何在 C# 中读取 CSV 文件;

在 MVC、ASP.NET 或 .NET Core 中使用 IronXL 读取 CSV 文件之前,您必须先安装 IronXL。 以下是翻译流程的基本介绍。

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

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

在 NuGet 包管理器中安装 IronXL 包

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

WorkBook workbook = WorkBook.LoadCSV("Weather.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
WorkSheet ws = workbook.DefaultWorkSheet;
workbook.SaveAs("Csv_To_Excel.xlsx");
WorkBook workbook = WorkBook.LoadCSV("Weather.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
WorkSheet ws = workbook.DefaultWorkSheet;
workbook.SaveAs("Csv_To_Excel.xlsx");
Dim workbook As WorkBook = WorkBook.LoadCSV("Weather.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
Dim ws As WorkSheet = workbook.DefaultWorkSheet
workbook.SaveAs("Csv_To_Excel.xlsx")
$vbLabelText   $csharpLabel

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

本教程的CSV数据

对象WorkBook被创建。 WorkBook对象的LoadCSV方法用于指定CSV文件的名称,其格式,以及所用分隔符,这些分隔符以字符串数组的形式存储。 在这种情况下,逗号被用作分隔符。

之后,创建一个WorkSheet对象; 这是 CSV 文件内容的存储位置。 然后对文件进行重命名,并以新格式存储。 然后将 CSV 文件数据以表格形式排列在工作表中。 译文将是这样的

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

数据转换为Excel文件

C# 中的 CSV 解析;.NET

CSV在字段换行符的处理方式和字段可能被括在引号中存在几个问题,这阻止了简单的字符串拆分技术Split("'")发挥作用。 相反,IronXL 通过 LoadCSV 方法的可选参数提供了自定义分隔符的功能,请查看 LoadCSV 的 API 文档以获取更多详细信息。

C# Records - 读取 CSV 数据

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

WorkBook workbook = WorkBook.LoadCSV("Weather.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
WorkSheet ws = workbook.DefaultWorkSheet;
DataTable dt = ws.ToDataTable(true);//parse sheet1 of sample.xlsx file into datatable
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();
}
WorkBook workbook = WorkBook.LoadCSV("Weather.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
WorkSheet ws = workbook.DefaultWorkSheet;
DataTable dt = ws.ToDataTable(true);//parse sheet1 of sample.xlsx file into datatable
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();
}
Dim workbook As WorkBook = WorkBook.LoadCSV("Weather.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
Dim ws As WorkSheet = workbook.DefaultWorkSheet
Dim dt As DataTable = ws.ToDataTable(True) 'parse sheet1 of sample.xlsx file into datatable
For Each row As DataRow In dt.Rows 'access rows
	For i As Integer = 0 To dt.Columns.Count - 1 'access columns of corresponding row
		Console.Write(row (i) & "  ")
	Next i
	Console.WriteLine()
Next row
$vbLabelText   $csharpLabel

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

从 CSV 文件访问数据并显示在控制台中

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

翻译过程简单明了:加载 CSV 文件并保存为 Excel 文件。

WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
WorkSheet ws = workbook.DefaultWorkSheet;

workbook.SaveAs("CsvToExcelConversion.xlsx");
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
WorkSheet ws = workbook.DefaultWorkSheet;

workbook.SaveAs("CsvToExcelConversion.xlsx");
Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
Dim ws As WorkSheet = workbook.DefaultWorkSheet

workbook.SaveAs("CsvToExcelConversion.xlsx")
$vbLabelText   $csharpLabel

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

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

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

WorkSheet 对象可以在众多 WorkBooks 中找到。 这些是 Excel 文档的工作表。 如果工作簿中有工作表,您可以通过以下操作获取工作表的名称:

//Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
//Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
'Open Sheet for reading
Dim worksheet = workbook.GetWorkSheet("sheetnamegoeshere")
$vbLabelText   $csharpLabel

读取单元格值的代码:

// Read from Ranges of cells elegantly.
foreach (var cell in worksheet ["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Read from Ranges of cells elegantly.
foreach (var cell in worksheet ["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
' Read from Ranges 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
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
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
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 特别优惠

IronXL 将 CSV 转换为 Excel 只需两行代码,此外还可以用 C# 进行 CSV 处理。

无需 Interop,使用 IronXL.Excel API 可谓轻而易举。 此外,IronXL 还提供了丰富的功能,可以在 Excel 的工作簿、工作表和单元格层面进行操作,例如在流行格式之间转换单元格数据格式化合并单元格插入数学函数,甚至管理图表和添加图像

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

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

IronPDF、IronXL、IronOCR、IronBarcode 和 IronWebscraper 都是Iron Software 套件的一部分。 Iron Software 允许您以优惠的价格购买他们的整个软件包。您只需花两个工具的价格就能使用所有这些工具。

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

雷根·彭
软件工程师
Regan毕业于雷丁大学,拥有电子工程学士学位。在加入Iron Software之前,他的前工作职位要求他专注于单一任务;他在Iron Software最喜欢的是能进行多种工作,无论是增加销售价值、技术支持、产品开发还是营销。他喜欢了解开发人员如何使用Iron Software的库,并利用这些知识不断改进文档和开发产品。
< 前一页
如何在C#中使用CSV解析器
下一步 >
C# 程序化打开 Excel 文件(代码示例教程)