在 C# 中將 DataTable 導出到 Excel(程式碼範例教程)
程式化修改Excel試算表可能很困難,主要有兩個原因。 首先,處理試算表時,使用者必須保持一致的介面和文件結構,這並不總是那麼簡單。 其次,在特定情況下尤其涉及複雜計算時,並不總能清楚哪段程式碼能運行。 有很多理由解釋為何程式化生成Excel文件如此困難。 程式設計師必須先將Excel文件中的資料轉換成可讀格式,然後解析資料並解析回去,這更為困難。 我已經想出了解決這個問題的方法。 我將教您如何使用IronXL .NET Excel 程式庫製作Excel文件,並程式化將DataTable匯出到Excel工作表,而不會遇到任何問題。 讓我們開始吧:
如何在C#中將DataTable匯出到Excel
- 安裝C#程式庫以將DataTable匯出到Excel
- 建立新的Excel工作簿並存取工作表
- 在C#中遍歷
DataTable中的DataRow - 存取
Cell中的Value屬性,並使用DataRow中的資料填充工作表 - 將Excel試算表匯出到所需位置
IronXL功能
- IronXL 可以在多種作業系統上運行,包括Windows、Linux 和 macOS。
- 幾乎所有的 .NET Framework 都受支援,包括控制台、Windows表單應用程式和 Web應用程式。
- IronXL 使讀取Excel文件變得簡單易行。
- 我們可以使用 IronXL 載入、編輯、匯出Datatables、匯出資料集以及讀取Excel文件格式,如XLSX文件、XLS、CSV、TSV、XLST、XLSM文件等。
- IronXL 允許我們使用多種擴展名保存和匯出文件,包括XLS、CSV、TSV、JSON、XLSX等。
- 通過IronXL可以建立Excel 公式。
- 支援 Excel 單元格資料格式如文字、數字、公式、日期、貨幣、百分比等。
- 它還提供多種排序選項,如範圍、列和行等。
- IronXL中的單元格樣式包括字體、大小、背景模式、邊框和對齊等。
- 我們可以使用 IronXL 從Excel文件中讀取並匯出資料。
- IronXL 不需要在您的伺服器上安裝Excel或Interop。 IronXL的API比Microsoft Office、Interop和Excel更快,更易於使用。
1 在Visual Studio中建立新專案
要使用IronXL 程式庫,我們必須在Visual Studio中建立一個.NET 專案。 您可以使用任何版本的Visual Studio,但建議使用最新版本。 您可以依據您的需求建立像Windows Forms或不同專案範本的應用程式。 為了簡單起見,在這個教學中我將使用Console Application。
在Visual Studio中建立新的專案UI
接下來,輸入專案名稱和專案位置。
建立新專案的配置步驟
接下來,選擇以下框架。 在此專案中,我們將使用.NET Core 6。
.NET Framework 選擇 UI
一旦應用程式建立了解決方案,它將打開program.cs文件,您可以在其中輸入程式碼並構建/運行應用程式。
新專案中的空白program.cs文件
接下來,我們可以加入程式庫來測試程式碼。
2 安裝 IronXL Library
IronXL 程式庫可以通過四種方式下載和安裝。
這些是:
- 使用Visual Studio
- 使用Visual Studio 指令行。
- 從 NuGet 網站直接下載。
- 從 IronXL 網站直接下載。
2.1 使用 Visual Studio
我們可以使用NuGet 包管理器安裝 IronXL 程式庫。 您必須首先打開NuGet 包管理器,然後在瀏覽選項卡中搜尋IronXL。 在搜尋結果中選擇IronXL並安裝它。 之後,我們的專案將可以在IronXL 程式庫中使用。
以下截圖顯示如何在Visual Studio中打開NuGet 包管理器。
在Visual Studio中導航到NuGet 包管理器
在搜尋結果中IronXL:
搜尋 IronXL 程式庫
2.2 使用 Visual Studio 指令行
很多人喜歡使用控制台執行操作。 因此,我們也可以使用控制台安裝它。 按照以下步驟透過命令行安裝 IronXL。
- 在 Visual Studio 中,轉到工具-> NuGet 包管理器 -> 套件管理器控制台。
- 在套件管理器控制台的選項卡中輸入以下行:
Install-Package IronXL.Excel
現在包將會下載/安裝到當前項目,並準備好使用。
透過控制台安裝IronXL程式包
2.3 從 NuGet 網站直接下載
第三種方式是從網站直接下載 NuGet 包。
- 轉至NuGet 官方 IronXL 包網頁。
- 從右側選單中選擇下載包選項。
- 雙擊已下載包。 它將自動安裝。
- 然後,重新載入解決方案並開始在專案中使用它。
2.4 從 IronXL 網站直接下載
點擊連結來從網站直接下載最新程式包。下載後,按照以下步驟將程式包新增到專案中。
- 從解決方案視窗中右鍵單擊項目。
- 然後,選擇選項參考並瀏覽已下載參考的位置。
- 接下來,單擊確定以新增參考。
3 使用 IronXL 將 Datatable 匯出到 Excel 文件中
IronXL 允許我們以有限的步驟輕鬆將 DataTables 匯出到 Excel 文件中。
首先,我們需要包括 IronXL 的命名空間,如下圖程式碼所示。 一旦新增後,我們就可以在程式碼中使用 IronXL 的類別和方法。
在使用程式庫之前包含 namespace 的 IronXL
IronXL 允許我們建立Excel文件並將其轉換為工作簿物件。 在將它們轉換為物件後,我們可以執行各種型別的操作。 在下面的範例程式碼中,我們將 DataTable 轉換為 Excel 工作表,然後我們可以建立 Excel 文件。
using System;
using System.Data;
using IronXL;
public class ExcelExporter
{
/// <summary>
/// Exports a DataTable to an Excel file using IronXL.
/// </summary>
/// <param name="filePath">The file path where the Excel file will be saved.</param>
public static void ExportToExcel(string filePath)
{
// Creating a DataTable with a single column
DataTable table = new DataTable();
table.Columns.Add("DataSet_Animal", typeof(string));
// Adding some rows to the DataTable
table.Rows.Add("Lion");
table.Rows.Add("Tiger");
table.Rows.Add("Cat");
table.Rows.Add("Goat");
table.Rows.Add("Panther");
table.Rows.Add("Fox");
table.Rows.Add("Cheetah");
// Creating a new Excel Workbook
WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);
// Accessing the default worksheet
WorkSheet ws = wb.DefaultWorkSheet;
// Iterating through the DataTable rows
int rowCount = 1;
foreach (DataRow row in table.Rows)
{
// Adding each DataRow's first column value to the corresponding cell in the worksheet
ws["A" + rowCount].Value = row[0].ToString();
rowCount++;
}
// Saving the workbook to a CSV file at specified file path with ";" as delimiter
wb.SaveAsCsv(filePath, ";");
}
}
using System;
using System.Data;
using IronXL;
public class ExcelExporter
{
/// <summary>
/// Exports a DataTable to an Excel file using IronXL.
/// </summary>
/// <param name="filePath">The file path where the Excel file will be saved.</param>
public static void ExportToExcel(string filePath)
{
// Creating a DataTable with a single column
DataTable table = new DataTable();
table.Columns.Add("DataSet_Animal", typeof(string));
// Adding some rows to the DataTable
table.Rows.Add("Lion");
table.Rows.Add("Tiger");
table.Rows.Add("Cat");
table.Rows.Add("Goat");
table.Rows.Add("Panther");
table.Rows.Add("Fox");
table.Rows.Add("Cheetah");
// Creating a new Excel Workbook
WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);
// Accessing the default worksheet
WorkSheet ws = wb.DefaultWorkSheet;
// Iterating through the DataTable rows
int rowCount = 1;
foreach (DataRow row in table.Rows)
{
// Adding each DataRow's first column value to the corresponding cell in the worksheet
ws["A" + rowCount].Value = row[0].ToString();
rowCount++;
}
// Saving the workbook to a CSV file at specified file path with ";" as delimiter
wb.SaveAsCsv(filePath, ";");
}
}
Imports System
Imports System.Data
Imports IronXL
Public Class ExcelExporter
''' <summary>
''' Exports a DataTable to an Excel file using IronXL.
''' </summary>
''' <param name="filePath">The file path where the Excel file will be saved.</param>
Public Shared Sub ExportToExcel(ByVal filePath As String)
' Creating a DataTable with a single column
Dim table As New DataTable()
table.Columns.Add("DataSet_Animal", GetType(String))
' Adding some rows to the DataTable
table.Rows.Add("Lion")
table.Rows.Add("Tiger")
table.Rows.Add("Cat")
table.Rows.Add("Goat")
table.Rows.Add("Panther")
table.Rows.Add("Fox")
table.Rows.Add("Cheetah")
' Creating a new Excel Workbook
Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLS)
' Accessing the default worksheet
Dim ws As WorkSheet = wb.DefaultWorkSheet
' Iterating through the DataTable rows
Dim rowCount As Integer = 1
For Each row As DataRow In table.Rows
' Adding each DataRow's first column value to the corresponding cell in the worksheet
ws("A" & rowCount).Value = row(0).ToString()
rowCount += 1
Next row
' Saving the workbook to a CSV file at specified file path with ";" as delimiter
wb.SaveAsCsv(filePath, ";")
End Sub
End Class
在上述程式碼中,我們將 DataTable 匯出到 Excel 文件中。首先,我們建立一個 DataTable ,然後建立列標題。 建立列後,我們逐一新增行。 一旦新增了行,我們就建立 WorkBook 物件。 通過使用物件,我們可以將資料新增到Excel工作表中,然後將資料保存到位置。 我們正在建立 WorkSheet 物件,這允許建立工作表,然後我們可以將其新增到 WorkBook 物件中。
我們使用 foreach 迴圈逐一讀取DataTable值,然後我們將值新增到工作表中。 一旦所有值都新增到工作表中,我們會使用一個稱為 SaveAsCsv 的方法將其保存為CSV文件——某需要傳遞分隔符和檔案名稱以及位置作為參數。 分隔符是可選參數,如果不需要,可以忽略。
在Visual Studio中完成的程式碼
以上是我們在.NET Core 6上使用的完整程式碼截圖。
結果:
在Microsoft Excel中開啟該檔案時的結果
以上是已執行程式碼範例的結果。 在截圖中,DataTable 中的所有可用資料已逐一新增到新建立的 Excel 表中。
4 結論
IronXL 是最常用的 Excel 程式庫之一。 它不依賴任何其他第三方程式庫。 它是獨立的,不需要安裝 MS Excel。 它可以在多個平台上使用。 IronXL 的入門價格從 $999 開始。 此外,它還提供一年的產品支持和更新選擇。 IronXL 提供額外成本的免版稅再分發範圍。如需了解更多價格細節,請存取我們的授權頁面。
常見問題
如何在C#中將DataTable匯出到Excel文件?
您可以利用IronXL的WorkBook和WorkSheet類將DataTable匯出到Excel文件。建立DataTable,遍歷其行,然後利用IronXL的API用資料填充Excel文件。
在Excel操作中使用IronXL相較於Interop有什麼優勢?
IronXL比Microsoft Interop更快速高效,不需要安裝Microsoft Excel,並且支持多平台和多種檔案格式。
IronXL支援哪種Excel檔案格式?
IronXL支持多種Excel文件格式,包括XLSX, XLS, CSV, TSV, XLST, 和XLSM,允許靈活的文件操作。
IronXL在匯出資料時可以處理Excel公式嗎?
是的,IronXL可以處理Excel公式,確保在從DataTable匯出資料到Excel文件時複雜的計算能夠被保存。
哪些操作系統與IronXL相容?
IronXL與多個操作系統相容,包括Windows, Linux, 和macOS,允許跨平台開發。
using IronXL 是否需要安裝 Microsoft Excel?
不,IronXL獨立於Microsoft Excel運行,允許您在伺服器上不需安裝Excel即可處理Excel文件。
如何在C#專案中安裝IronXL?
您可以通過Visual Studio中的NuGet包管理器安裝IronXL,使用命令行工具,或直接從NuGet或IronXL網站下載。
IronXL支持哪些.NET框架?
IronXL支持多種.NET框架,包括控制台應用程式、Windows窗體應用程式和Web應用程式,使其對不同型別的專案都有較大的適應性。
IronXL是否支持Excel文件中單元格的樣式設置和格式設置?
是的,IronXL提供了多樣的單元格樣式設置和格式選項,如設置字體樣式、顏色和邊框,以增強Excel文件的外觀。
IronXL如何簡化以編程方式建立Excel文件的過程?
IronXL透過提供一個易於使用的API來簡化建立、修改和匯出Excel文件的過程,無需維護其他方法所需的接口和結構複雜性。




