跳至页脚内容
使用 IRONXL

如何在 C# 中将数据集转换为 CSV

以下文章将演示如何将C#数据集转换为CSV文件。

IronXL 是一个出色的解决方案,可以处理电子表格,无论是CSV格式还是Excel文件。 IronXL免费供开发使用,易于使用,并提供广泛的功能来处理任何类型的电子表格。 它安全且性能卓越。 在继续之前,让我们简要介绍一下IronXL。

IronXL

IronXL 是一个 Iron Software 库,允许C#开发人员在.NET应用程序和网站中读取、生成和编辑Excel(及其他电子表格文件)。

IronXL是一个快速简便的方法,可以在C#和.NET中处理Excel和其他电子表格文件。 IronXL在.NET Framework、.NET Core和Azure上运行良好,无需Office Excel Interop。IronXL也不需要安装Microsoft Office或包括任何其他这类依赖项。

让我们开始创建和编写代码以为数据集创建CSV文件。

创建新的Visual Studio项目

打开Visual Studio集成开发环境;推荐使用最新版本的Visual Studio,但您可以根据个人喜好使用任何版本。 请注意,创建新项目的步骤可能因版本而异。

如何在C#中将数据集转换为CSV,图1:Visual Studio的启动窗口 Visual Studio的启动窗口

点击创建新项目。 将会出现一个新窗口,如下所示。

如何在C#中将数据集转换为CSV,图2:在Visual Studio中新建项目 在 Visual Studio 中创建新项目

从列表中选择您喜欢的项目模板。点击 下一步 按钮,然后将出现一个新窗口,如下所示。

如何在C#中将数据集转换为CSV,图3:配置新创建的项目 配置新创建的项目

命名您的项目,选择其位置,然后按 下一步 按钮。 将会出现一个新窗口,如下所示。

如何在C#中将数据集转换为CSV,图4:选择.NET Framework版本 选择.NET Framework版本

选择您的目标.NET Framework。 您可以选择任何适合您需求的.NET Framework,因为IronXL支持每个.NET Framework。 本教程将使用.NET 7。点击 创建 按钮,将新项目创建如下面所示。

如何在C#中将数据集转换为CSV,图5:新的Visual Studio控制台应用程序 新的Visual Studio控制台应用程序

现在,安装IronXL NuGet包以在此应用程序中使用它。

安装 IronXL

打开NuGet包管理器控制台,并输入以下命令。

Install-Package IronXL.Excel

NuGet包 将被安装并准备好使用,如下所示。

如何在C#中将数据集转换为CSV,图6:IronXL包及其包依赖项的安装 IronXL包及其包依赖项的安装

现在,让我们编写一些代码以将数据集转换为C#中的CSV文件。

此示例将从SQL服务器数据库填充数据。 从SQL数据库获取数据集之后,我们将使用此输入数据创建一个CSV文件。

创建数据表

第一步是从SQL填充数据,但您可以使用您偏好的任何数据源。

本教程使用以下数据:

如何在C#中将数据集转换为CSV,图7:使用示例数据创建新数据库 使用示例数据创建新数据库

以下是用于创建示例数据的SQL脚本:

USE Test_DB;

CREATE TABLE STUDENT_DATA
(
    REG_NUM INT PRIMARY KEY,
    FIRST_NAME VARCHAR(30),
    LAST_NAME VARCHAR(30),
    CLASS VARCHAR(5),
    CONTACT_NUM VARCHAR(15)
);

INSERT INTO STUDENT_DATA
VALUES
(123, 'JHON', 'SMITH', '2', '(223) 444-1234'),
(124, 'THOMAS', 'CHARLES', '2', '(332) 555-1235'),
(125, 'WILLIAM', 'RICHARD', '2', '(432) 666-1236'),
(126, 'JAMES', 'BOND', '2', '(543) 777-1237'),
(127, 'CRISTOPHER', 'MICHAL', '2', '(555) 999-1238'),
(128, 'DONALD', 'MARK', '2', '(777) 888-1239');

以下C#代码用于将数据表导出到CSV文件。

using System;
using System.Data;
using System.Data.SqlClient;
using IronXL;

class Program
{
    // Method to retrieve data from SQL database and return as DataTable
    public static DataTable GetData()
    {
        // Define connection string (modify accordingly for your local server)
        string connString = @"server=DESKTOP-NIP3TOE\SQLEXPRESS; Database=Test_DB; Integrated Security=True;";
        string query = "SELECT * FROM STUDENT_DATA";

        try
        {
            // Create SQL connection
            using SqlConnection conn = new SqlConnection(connString);
            // Create SQL command
            SqlCommand cmd = new SqlCommand(query, conn);
            conn.Open();
            // Create data adapter
            using SqlDataAdapter da = new SqlDataAdapter(cmd);
            // Query the database and return the result to a data table
            DataTable dt = new DataTable();
            da.Fill(dt);
            return dt;
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred: {ex.Message}");
            throw;
        }
    }

    static void Main(string[] args)
    {
        // Retrieve data and store it in a DataTable
        DataTable table = GetData();

        // Create a new Workbook
        WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);
        wb.Metadata.Author = "JOHN";

        // Use the default worksheet
        WorkSheet ws = wb.DefaultWorkSheet;
        int rowCount = 1;

        // Populate the worksheet with data from the DataTable
        foreach (DataRow row in table.Rows)
        {
            ws[$"A{rowCount}"].Value = row[0].ToString();
            ws[$"B{rowCount}"].Value = row[1].ToString();
            ws[$"C{rowCount}"].Value = row[2].ToString();
            ws[$"D{rowCount}"].Value = row[3].ToString();
            ws[$"E{rowCount}"].Value = row[4].ToString();
            rowCount++;
        }

        // Save the workbook as a CSV file
        wb.SaveAsCsv(@"D:\Tutorial Project\Save_DataTable_CSV.csv");
    }
}
using System;
using System.Data;
using System.Data.SqlClient;
using IronXL;

class Program
{
    // Method to retrieve data from SQL database and return as DataTable
    public static DataTable GetData()
    {
        // Define connection string (modify accordingly for your local server)
        string connString = @"server=DESKTOP-NIP3TOE\SQLEXPRESS; Database=Test_DB; Integrated Security=True;";
        string query = "SELECT * FROM STUDENT_DATA";

        try
        {
            // Create SQL connection
            using SqlConnection conn = new SqlConnection(connString);
            // Create SQL command
            SqlCommand cmd = new SqlCommand(query, conn);
            conn.Open();
            // Create data adapter
            using SqlDataAdapter da = new SqlDataAdapter(cmd);
            // Query the database and return the result to a data table
            DataTable dt = new DataTable();
            da.Fill(dt);
            return dt;
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred: {ex.Message}");
            throw;
        }
    }

    static void Main(string[] args)
    {
        // Retrieve data and store it in a DataTable
        DataTable table = GetData();

        // Create a new Workbook
        WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);
        wb.Metadata.Author = "JOHN";

        // Use the default worksheet
        WorkSheet ws = wb.DefaultWorkSheet;
        int rowCount = 1;

        // Populate the worksheet with data from the DataTable
        foreach (DataRow row in table.Rows)
        {
            ws[$"A{rowCount}"].Value = row[0].ToString();
            ws[$"B{rowCount}"].Value = row[1].ToString();
            ws[$"C{rowCount}"].Value = row[2].ToString();
            ws[$"D{rowCount}"].Value = row[3].ToString();
            ws[$"E{rowCount}"].Value = row[4].ToString();
            rowCount++;
        }

        // Save the workbook as a CSV file
        wb.SaveAsCsv(@"D:\Tutorial Project\Save_DataTable_CSV.csv");
    }
}
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports IronXL

Friend Class Program
	' Method to retrieve data from SQL database and return as DataTable
	Public Shared Function GetData() As DataTable
		' Define connection string (modify accordingly for your local server)
		Dim connString As String = "server=DESKTOP-NIP3TOE\SQLEXPRESS; Database=Test_DB; Integrated Security=True;"
		Dim query As String = "SELECT * FROM STUDENT_DATA"

		Try
			' Create SQL connection
			Using conn As New SqlConnection(connString)
				' Create SQL command
				Dim cmd As New SqlCommand(query, conn)
				conn.Open()
				' Create data adapter
				Using da As New SqlDataAdapter(cmd)
					' Query the database and return the result to a data table
					Dim dt As New DataTable()
					da.Fill(dt)
					Return dt
				End Using
			End Using
		Catch ex As Exception
			Console.WriteLine($"An error occurred: {ex.Message}")
			Throw
		End Try
	End Function

	Shared Sub Main(ByVal args() As String)
		' Retrieve data and store it in a DataTable
		Dim table As DataTable = GetData()

		' Create a new Workbook
		Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLS)
		wb.Metadata.Author = "JOHN"

		' Use the default worksheet
		Dim ws As WorkSheet = wb.DefaultWorkSheet
		Dim rowCount As Integer = 1

		' Populate the worksheet with data from the DataTable
		For Each row As DataRow In table.Rows
			ws($"A{rowCount}").Value = row(0).ToString()
			ws($"B{rowCount}").Value = row(1).ToString()
			ws($"C{rowCount}").Value = row(2).ToString()
			ws($"D{rowCount}").Value = row(3).ToString()
			ws($"E{rowCount}").Value = row(4).ToString()
			rowCount += 1
		Next row

		' Save the workbook as a CSV file
		wb.SaveAsCsv("D:\Tutorial Project\Save_DataTable_CSV.csv")
	End Sub
End Class
$vbLabelText   $csharpLabel

代码解释

  • 方法 GetData() 从SQL Server数据库检索数据并将其作为 DataTable 返回。

  • Main 方法中,使用IronXL创建一个 WorkBook,然后将数据填充到 WorkSheet 中。

  • 使用 foreach 循环遍历 DataTable 的行,将每个值插入到 WorkSheet 中的新行中。

  • 最后,使用IronXL提供的 SaveAsCsv 函数保存CSV文件。

输出

该程序生成的CSV文件如下:

如何在C#中将数据集转换为CSV,图8:CSV输出文件 CSV输出文件

很显然,该CSV文件生成正确,并与提供的输入对齐。

摘要

本文演示了如何从数据集中在C#中创建CSV文件。 该库还可以 使用C#读取CSV文件。 来自SQL Server数据库的数据集被填充并在三个步骤中创建CSV文件:

  1. 从SQL Server获取数据。
  2. 将数据填充到数据表。
  3. 从该数据表创建CSV文件。

在.NET 7中使用IronXL创建CSV文件非常容易,如上所示。 该程序的性能非常出色,因为它是在.NET 7中使用IronXL编写的。 IronXL提供其他有用的功能,如创建、读取和操作Excel文件。 更多详细信息,请访问官方文档

Additionally, IronPDF offers developers methods to render PDF documents into images and extract text and content from a PDF. Additionally, IronPDF is also capable of rendering charts in PDFs, adding barcodes, enhancing security with passwords programmatically.

免费版本的IronXL用于开发目的。 To deploy an application in production, please obtain a free trial version or a commercial license. IronXL是Iron Suite的一部分,包含五个库:

  1. IronXL,今天探索的部分。
  2. IronPDF 用于生成、读取和操作PDF文件
  3. IronOCR 用于从图像中提取文本
  4. IronBarcode 用于读取和生成条形码
  5. IronWebScraper 用于从网站提取结构化数据。

如果一起购买,可以以两个产品的价格获取所有这些产品。

常见问题解答

如何将 C# 数据集转换为 CSV 文件?

可以使用 IronXL 将 C# 数据集转换为 CSV 文件。首先,从数据源(如 SQL Server 数据库)检索数据,并将其填充到 DataTable。然后,使用 IronXL 将 DataTable 导出为 CSV 文件。

在 .NET 中处理 Excel 文件是否需要 Microsoft Office?

不,使用 IronXL 在 .NET 中处理 Excel 文件时不需要 Microsoft Office。IronXL 可以独立操作,无需 Office 或 Interop 依赖。

安装 IronXL 以处理电子表格的最佳方式是什么?

通过 Visual Studio 中的 NuGet 包管理器控制台安装 IronXL 是处理电子表格的最佳方式。使用命令:Install-Package IronXL.Excel

IronXL 如何在处理电子表格时提高生产力?

IronXL 通过允许开发人员快速轻松地在 .NET 应用程序中读取、生成和编辑 Excel 和 CSV 文件,提高了生产力,无需额外的软件安装或依赖。

IronXL 是否可以用于从任何数据源生成 CSV 文件?

是的,你可以使用 IronXL 从任何数据源生成 CSV 文件。文章通过使用 SQL Server 数据库填充 DataTable,然后使用 IronXL 导出为 CSV 演示了这一点。

IronXL 是否与最新的 .NET 版本兼容?

是的,IronXL 兼容最新的 .NET 版本,包括 .NET 7,并在这些平台上提供增强的性能优势。

使用 IronXL 进行电子表格任务的主要好处是什么?

使用 IronXL 的主要好处包括可以在没有 Microsoft Office 的情况下处理电子表格,支持所有 .NET 版本,以及高效地将数据集转换为 CSV 文件的简便性。

什么是 Iron Suite,它包括哪些内容?

Iron Suite 是一个库集合,包括用于 Excel 文件的 IronXL、用于 PDF 的 IronPDF、从图像中提取文本的 IronOCR、用于条形码的 IronBarcode 和用于网络数据提取的 IronWebScraper。

Curtis Chau
技术作家

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

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