在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
欢迎阅读导入 CSV 的初级教程 (逗号分隔值) 文件到一个 数据表 在 C# 中使用 IronXL. 本指南将为您提供一个易于遵循的方法,确保即使您是 C# 的新手,也能找到这个过程的简单方法。我们将涵盖每一个步骤,从设置环境到编写源代码。通过本教程结束时,您将清楚地了解如何在 C# 中使用 var 阅读器和连接字符串,将 CSV 数据转换为 Datatable,管理 Datatable 列,并处理 CSV 文档的各种方面。
在我们开始之前,请确保您已具备以下条件
CSV 文件 (逗号分隔值文件) 是一种纯文本文件,使用特定的结构来排列表格数据。CSV 简单、紧凑,可用于多种平台,因此是一种常用的数据交换格式。在 CSV 文件中,数据用逗号分隔,每一行代表一行新数据,列标题通常出现在第一行,即 int i。
数据表是 C# 中 ADO.NET 库的一部分,代表一个内存数据表。它由行和列组成,每一列可以是不同的数据类型。DataTable 非常灵活,能以结构化格式表示数据,因此非常适合处理 CSV 文件数据。
1.打开 Visual Studio。
2.选择 File > New > Project。
3.选择一个 C# 控制台或 Windows 窗体应用程序,并给它取一个合适的名字。
IronXL 是一个功能强大的库,可让你 使用 Excel 和 CSV 文件。要使用它,需要通过 NuGet 包管理器进行安装。在 Visual Studio:
1.转到 工具 > NuGet软件包管理器 > 管理解决方案的 NuGet 软件包。
2.搜索 IronXL.Excel.
![如何在 C# 中导入 CSV 到 Datatable:图 1 - IronXL](/static-assets/excel/blog/csharp-import-csv-to-datatable-tutorial/csharp-import-csv-to-datatable-tutorial-1.webp)
3.将软件包安装到项目中。
using IronXL;
using System.Data;
using IronXL;
using System.Data;
Imports IronXL
Imports System.Data
这些使用语句包括我们任务所需的命名空间。
定义一个类,CsvToDataTable,其中包含一个静态方法 ImportCsvToDataTable。该方法将负责把 CSV 文件转换成数据表。
public class CsvToDataTable
{
public static DataTable ImportCsvToDataTable(string filePath)
{
// Code snippet to import CSV will be placed here
}
}
public class CsvToDataTable
{
public static DataTable ImportCsvToDataTable(string filePath)
{
// Code snippet to import CSV will be placed here
}
}
Public Class CsvToDataTable
Public Shared Function ImportCsvToDataTable(ByVal filePath As String) As DataTable
' Code snippet to import CSV will be placed here
End Function
End Class
在 ImportCsvToDataTable 方法中,首先加载 CSV 文件。IronXL 提供了一种直接的方法:
// Load the CSV file
WorkBook workbook = WorkBook.LoadCSV(filePath);
// Load the CSV file
WorkBook workbook = WorkBook.LoadCSV(filePath);
' Load the CSV file
Dim workbook As WorkBook = WorkBook.LoadCSV(filePath)
WorkBook.LoadCSV是 IronXL 中加载 CSV 文件的一种方法。这里,filePath 是 CSV 文件的路径。
将加载的 CSV 数据转换为数据表。这一步是主要步骤,因为它将数据转换成一种可以在 C# 应用程序中轻松操作和显示的格式。
// Get the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert CSV worksheet to DataTable dt
DataTable dataTable = sheet.ToDataTable();
return dataTable;
// Get the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert CSV worksheet to DataTable dt
DataTable dataTable = sheet.ToDataTable();
return dataTable;
' Get the first worksheet
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Convert CSV worksheet to DataTable dt
Dim dataTable As DataTable = sheet.ToDataTable()
Return dataTable
该代码段将 CSV 数据转换为数据表。 DefaultWorkSheet 从工作簿中获取第一个工作表,相当于 CSV 文件中的全部 CSV 数据。ToDataTable方法是IronXL的一项强大功能,可将CSV数据有效映射为DataTable结构,包括列字符串标题行(如果CSV文件第一行中存在)。
现在,在应用程序中使用 ImportCsvToDataTable 方法。例如,您可能想在应用程序启动时或用户上传 CSV 文件时调用该方法。
// Usage
string csvFilePath = "csvfile.csv";
DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(csvFilePath);
// Usage
string csvFilePath = "csvfile.csv";
DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(csvFilePath);
' Usage
Dim csvFilePath As String = "csvfile.csv"
Dim dataTable As DataTable = CsvToDataTable.ImportCsvToDataTable(csvFilePath)
此代码片段演示了如何调用 ImportCsvToDataTable 方法。用 CSV 文件的实际文件路径替换 "csvfile.csv "。
获得 DataTable 后,就可以执行各种操作,如在用户界面中显示数据、过滤或处理数据。下面是一些示例:
foreach (DataRow row in dataTable.Rows)
{
foreach (var item in row.ItemArray)
{
Console.Write($"{item} ");
}
Console.WriteLine();
}
foreach (DataRow row in dataTable.Rows)
{
foreach (var item in row.ItemArray)
{
Console.Write($"{item} ");
}
Console.WriteLine();
}
For Each row As DataRow In dataTable.Rows
For Each item In row.ItemArray
Console.Write($"{item} ")
Next item
Console.WriteLine()
Next row
这段代码会遍历 DataTable 中的每一行和每一列,并将数据打印到控制台。
您可以使用 LINQ 过滤 DataTable 中的数据。例如,如果您想选择特定列满足条件的行:
var filteredRows = dataTable.AsEnumerable()
.Where(row => row.Field<string>("ColumnName") == "SomeValue");
var filteredRows = dataTable.AsEnumerable()
.Where(row => row.Field<string>("ColumnName") == "SomeValue");
Dim filteredRows = dataTable.AsEnumerable().Where(Function(row) row.Field(Of String)("ColumnName") = "SomeValue")
将 "ColumnName "和 "SomeValue "替换为列名称和要筛选的值。
以下是完整的源代码,您可以在您的项目中使用:
using IronXL;
using System;
using System.Data;
using System.IO;
public class CsvToDataTable
{
public static DataTable ImportCsvToDataTable(string filePath)
{
// Check if the file exists
if (!File.Exists(filePath))
{
throw new FileNotFoundException($"The file at {filePath} was not found.");
}
// Load the CSV file
WorkBook workbook = WorkBook.LoadCSV(filePath, listDelimiter: ";");
// Get the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert the worksheet to DataTable
DataTable dataTable = sheet.ToDataTable();
return dataTable;
}
}
class Program
{
static void Main(string [] args)
{
// Usage
try
{
string strfilepath = "sample_data.csv"; // CSV file path
DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(strfilepath);
foreach (DataRow row in dataTable.Rows)
{
foreach (var item in row.ItemArray)
{
Console.Write($"{item} ");
}
Console.WriteLine();
}
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred: {ex.Message}");
}
}
}
using IronXL;
using System;
using System.Data;
using System.IO;
public class CsvToDataTable
{
public static DataTable ImportCsvToDataTable(string filePath)
{
// Check if the file exists
if (!File.Exists(filePath))
{
throw new FileNotFoundException($"The file at {filePath} was not found.");
}
// Load the CSV file
WorkBook workbook = WorkBook.LoadCSV(filePath, listDelimiter: ";");
// Get the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert the worksheet to DataTable
DataTable dataTable = sheet.ToDataTable();
return dataTable;
}
}
class Program
{
static void Main(string [] args)
{
// Usage
try
{
string strfilepath = "sample_data.csv"; // CSV file path
DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(strfilepath);
foreach (DataRow row in dataTable.Rows)
{
foreach (var item in row.ItemArray)
{
Console.Write($"{item} ");
}
Console.WriteLine();
}
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred: {ex.Message}");
}
}
}
Imports IronXL
Imports System
Imports System.Data
Imports System.IO
Public Class CsvToDataTable
Public Shared Function ImportCsvToDataTable(ByVal filePath As String) As DataTable
' Check if the file exists
If Not File.Exists(filePath) Then
Throw New FileNotFoundException($"The file at {filePath} was not found.")
End If
' Load the CSV file
Dim workbook As WorkBook = WorkBook.LoadCSV(filePath, listDelimiter:= ";")
' Get the first worksheet
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Convert the worksheet to DataTable
Dim dataTable As DataTable = sheet.ToDataTable()
Return dataTable
End Function
End Class
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Usage
Try
Dim strfilepath As String = "sample_data.csv" ' CSV file path
Dim dataTable As DataTable = CsvToDataTable.ImportCsvToDataTable(strfilepath)
For Each row As DataRow In dataTable.Rows
For Each item In row.ItemArray
Console.Write($"{item} ")
Next item
Console.WriteLine()
Next row
Catch ex As Exception
Console.WriteLine($"An error occurred: {ex.Message}")
End Try
End Sub
End Class
您可以在 Program.cs 文件中使用该代码。如果在生产环境中工作,不要忘记添加 IronXL 的许可证。
运行代码后,它将加载 CSV 文件并将数据导入 DataTable。之后,它将在控制台中显示可数据化列的内容。这有助于验证数据是否已正确导入 DataTable。
在现实世界中,CSV 文件的格式和结构可能会有很大的不同。处理这些变化对确保应用程序的稳健性和通用性非常重要。下面我们就来详细介绍在使用 IronXL 将 CSV 数据导入 DataTable 时如何管理不同的情况。
逗号是 CSV 文件中分隔符的默认值。但是,CSV 文件并不总是使用逗号来分隔值。有时会使用分号、制表符或其他字符作为分隔符。要在 IronXL 中处理这种情况,可以使用
指定自定义分隔符: 在加载 CSV 文件之前,可以指定文件的分隔符。例如,如果您的文件使用分号 (;)您可以这样设置:
WorkBook workbook = WorkBook.LoadCSV(filePath, listDelimiter: ";");
WorkBook workbook = WorkBook.LoadCSV(filePath, listDelimiter: ";");
Dim workbook As WorkBook = WorkBook.LoadCSV(filePath, listDelimiter:= ";")
动态检测分隔符: 或者,你也可以编写一个函数来动态检测分隔符。这可以通过分析文件的前几行并确定最常见的特殊字符来实现。
处理大型 CSV 文件时,必须考虑内存使用情况和性能。IronXL 提供了有效的方法来处理大型文件,而无需一次性将整个文件加载到内存中。你可以分块读取文件,或利用 IronXL 提供的流式 API 来有效管理内存使用情况。
使用 C# 中的 IronXL 将 CSV 数据导入 DataTable 非常简单。它增强了应用程序的数据操作能力,使您可以高效地处理 CSV 文件。通过本教程中概述的步骤,初学者可以轻松地将此功能集成到他们的 C# 项目中。
IronXL 提供免费试用版,供用户探索其功能。对于那些寻求更高级功能和支持的用户,许可选项从"$liteLicense "开始。