在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
欢迎阅读导入 CSV 的初学者教程(逗号分隔值)文件到一个数据表在 C# 中使用IronXL. 本指南将为您提供一种简单易懂的方法,确保即使您是 C# 的新手,也会发现这一过程简单明了。 我们将涵盖从设置环境到编写源代码的每一个步骤。 在本教程结束时,您将清楚地了解如何将 CSV 数据转换为 Datatable、管理 Datatable 列,以及如何在 C# 中使用 var 阅读器和连接字符串处理 CSV 文档的各个方面。
在我们开始之前,请确保您具备以下条件
CSV 文件(逗号分隔值文件)是一种使用特定结构安排表格数据的纯文本文件。 CSV 是一种常用的数据交换格式,因为它简单、紧凑,可用于多种平台。 在 CSV 文件中,数据用逗号分隔,每一行代表一行新数据,列头通常出现在第一行,即 int i。
DataTable 是 C# 中 ADO.NET 库的一部分,代表一个内存数据表。 它包括行和列,每列可以是不同的数据类型。 DataTables 具有高度灵活性,可以结构化格式表示数据,是处理 CSV 文件数据的理想工具。
打开 Visual Studio。
选择文件 > 新 > 项目。
IronXL 是一个功能强大的库,可以让您使用 Excel和 CSV 文件的 C# 语言。 要使用它,您需要通过 NuGet 包管理器进行安装。 在 Visual Studio:
转到 工具 > NuGet 包管理器 > 为解决方案管理 NuGet 包。
搜索IronXL.Excel。
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 方法。 将 "csvfile.csv "替换为 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 提供免费试用版,供用户探索其功能。 对于寻求更高级功能和支持的用户,许可选项从 $749开始。