跳過到頁腳內容
使用 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 IDE;建議使用最新版本的 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 Server 資料庫填入資料。 從 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 檔案。

如上所示,使用 IronXL 在 .NET 7 中建立 CSV 檔案非常容易。 該程式性能卓越,因為它使用 .NET 7 和 IronXL 編寫。 IronXL 還提供其他實用功能,例如建立、讀取和操作 Excel 檔案。 更多詳情請參閱官方文件

此外,IronPDF 還為開發人員提供了將 PDF 文件渲染成圖像以及從 PDF 中提取文字和內容的方法。 此外,IronPDF 還能夠在 PDF 中渲染圖表添加條碼、透過程式設計方式使用密碼增強安全性

IronXL 的免費版本用於開發目的。 要在生產環境中部署應用程序,請取得免費試用版或商業許可證。 IronXL 是Iron Suite的一部分,Iron Suite 由五個庫組成:

  1. IronXL ,今天我們將對其進行探討。
  2. IronPDF用於產生、讀取和操作 PDF 文件
  3. IronOCR用於從圖像中提取文本
  4. IronBarcode用於讀取和產生條碼
  5. IronWebScraper用於從網站提取結構化資料。

如果同時購買,這些產品只需兩件的價格即可獲得。

常見問題解答

如何將 C# 資料集轉換為 CSV 檔案?

您可以使用 IronXL 將 C# 資料集轉換為 CSV 檔案。首先,從 SQL Server 資料庫等來源擷取資料,並將其填入 DataTable。然後,使用 IronXL 將 DataTable 匯出為 CSV 檔案。

我需要 Microsoft Office 來處理 .NET 中的 Excel 檔案嗎?

不,使用 IronXL 時,您不需要 Microsoft Office 來處理 .NET 中的 Excel 檔案。IronXL 可獨立運作,無需 Office 或 Interop 依賴。

在 .NET 中安裝 IronXL 處理試算表的最佳方式是什麼?

安裝處理試算表的 IronXL 的最佳方式是透過 Visual Studio 中的 NuGet 套件管理員控制台。使用命令Install-Package IronXL.Excel.

IronXL 如何提高使用試算表時的生產力?

IronXL.Excel 可讓開發人員在 .NET 應用程式中快速輕鬆地讀取、產生和編輯 Excel 與 CSV 檔案,而無需安裝其他軟體或依賴其他軟體,進而提高生產力。

我可以使用 IronXL 從任何資料來源產生 CSV 檔案嗎?

是的,您可以使用 IronXL 從任何資料來源產生 CSV 檔案。文章透過使用 SQL Server 資料庫來填充 DataTable,然後再使用 IronXL 將 DataTable 匯出為 CSV 來進行示範。

IronXL 是否與最新的 .NET 版本相容?

是的,IronXL for .NET 與最新的 .NET 版本相容,包括 .NET 7,並在這些平台上提供增強的效能優勢。

使用 IronXL 執行試算表工作有哪些主要優點?

使用 IronXL 的主要優點包括:無需 Microsoft Office 即可處理試算表、支援所有 .NET 版本,以及簡單有效地將資料集轉換為 CSV 檔案。

Iron Suite 是什麼,包含哪些內容?

Iron Suite 是一系列函式庫的集合,包括用於 Excel 檔案的 IronXL、用於 PDF 的 IronPDF、用於從影像中抽取文字的 IronOCR、用於條碼的 IronBarcode,以及用於網頁資料抽取的 IronWebScraper。

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