使用IRONXL

如何在 C# 中將資料集轉換爲 CSV

里根普恩
里根普恩
2023年4月18日
已更新 2024年2月20日
分享:

以下文章將演示如何將 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 Interopm。 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 伺服器資料庫填充資料。 從 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 檔案。

public static DataTable getData()
{
    string connString = @"server=DESKTOP-NIP3TOE\SQLEXPRESS; Database=Test_DB; Integrated Security=True;";
    string query = "select * from STUDENT_DATA";
    try
    {
        SqlConnection conn = new SqlConnection(connString);
        SqlCommand cmd = new SqlCommand(query, conn);
        conn.Open();
        // create data adapter
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        // this will query your database and return the result to your datatable
        DataTable dt = new DataTable();
        da.Fill(dt);
        da.Dispose();
        return dt;
    } catch(Exception)
    {
        throw;
    }
}

static void Main(string [] args)
{
    DataTable table = getData();
    WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);
    wb.Metadata.Author = "JOHN";
    WorkSheet ws = wb.DefaultWorkSheet;
    int rowCount = 1;
    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++;
    }
    wb.SaveAsCsv(@"D:\Tutorial Project\Save_DataTable_CSV.csv"); // 
}
public static DataTable getData()
{
    string connString = @"server=DESKTOP-NIP3TOE\SQLEXPRESS; Database=Test_DB; Integrated Security=True;";
    string query = "select * from STUDENT_DATA";
    try
    {
        SqlConnection conn = new SqlConnection(connString);
        SqlCommand cmd = new SqlCommand(query, conn);
        conn.Open();
        // create data adapter
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        // this will query your database and return the result to your datatable
        DataTable dt = new DataTable();
        da.Fill(dt);
        da.Dispose();
        return dt;
    } catch(Exception)
    {
        throw;
    }
}

static void Main(string [] args)
{
    DataTable table = getData();
    WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);
    wb.Metadata.Author = "JOHN";
    WorkSheet ws = wb.DefaultWorkSheet;
    int rowCount = 1;
    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++;
    }
    wb.SaveAsCsv(@"D:\Tutorial Project\Save_DataTable_CSV.csv"); // 
}
Public Shared Function getData() As DataTable
	Dim connString As String = "server=DESKTOP-NIP3TOE\SQLEXPRESS; Database=Test_DB; Integrated Security=True;"
	Dim query As String = "select * from STUDENT_DATA"
	Try
		Dim conn As New SqlConnection(connString)
		Dim cmd As New SqlCommand(query, conn)
		conn.Open()
		' create data adapter
		Dim da As New SqlDataAdapter(cmd)
		' this will query your database and return the result to your datatable
		Dim dt As New DataTable()
		da.Fill(dt)
		da.Dispose()
		Return dt
	Catch e1 As Exception
		Throw
	End Try
End Function

Shared Sub Main(ByVal args() As String)
	Dim table As DataTable = getData()
	Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLS)
	wb.Metadata.Author = "JOHN"
	Dim ws As WorkSheet = wb.DefaultWorkSheet
	Dim rowCount As Integer = 1
	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
	wb.SaveAsCsv("D:\Tutorial Project\Save_DataTable_CSV.csv")
End Sub
$vbLabelText   $csharpLabel

程式碼說明

方法getData()將從先前討論過的 SQL Server 資料庫中檢索資料。

在主要函數中,將使用 IronXL 創建一個WorkBook,然後創建一個WorkSheet

for迴圈中,數據將填入給定工作表的行中。

之後,使用 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 的一部分,其中包含五個函式庫:

  4. IronXL,是今天要探討的內容。

  5. IronPDF 用於生成、閱讀和操作 PDF 文件

  6. IronOCR 用於從圖像中提取文本的工作

  7. IronBarcode 用於讀取和生成條碼

  8. IronWebScraper 用於從網站中提取結構數據。

    如果一起購買,您可以以兩個產品的價格獲得所有這些產品。

里根普恩
軟體工程師
Regan 畢業於雷丁大學,擁有電子工程學士學位。在加入 Iron Software 之前,他的工作角色讓他專注於單一任務;而他在 Iron Software 工作中最喜歡的是他所能承擔的工作範圍,無論是增加銷售價值、技術支持、產品開發或市場營銷。他喜歡了解開發人員如何使用 Iron Software 庫,並利用這些知識不斷改進文檔和開發產品。
< 上一頁
如何在 C# 中導入 Excel 文件
下一個 >
如何在 VB.NET 中寫入 Excel 文件