在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 30 天的全功能產品。
在幾分鐘內上手運行。
試用產品期間完全訪問我們的支援工程團隊
這篇博客將比較和對比如何在 .NET 技術中以編程方式與 Microsoft Excel 文件進行互動,無論是 CSV 格式還是標準 Excel 格式,使用其中最流行的庫之一,IronXL。
使用 IronXL 庫在 C# 中,您可以輕鬆讀取並將 Microsoft Excel 文件轉換為 CSV 文件。 IronXL 是一個獨立的 .NET 軟體庫,可以讀取多種試算表格式,無需安裝 Microsoft Excel 或依賴 Microsoft Office Interop Excel。
IronXL 是領先的 C# Excel 試算表庫之一,兼容 .NET Core 和 .NET Framework。 它支援多種 .NET Frameworks,包括網路應用程式、Windows Forms 應用程式和控制台應用程式。 使用 IronXL 讀取 Excel 文件既快速又簡單。 它支援多種 Excel 檔案格式,包括 XLSX、XLS、CSV、TSV、XLST、XLSM 等。 您可以匯入、編輯、匯出資料表,匯出資料集,並執行許多其他操作。 可以匯出和儲存具有不同副檔名的檔案。
使用 IronXL 直觀的 C# API,您可以在 .NET 環境中輕鬆讀取、修改和創建 Excel 試算表文件。 它為 .NET Core、.NET Framework、Xamarin、移動設備、Linux、macOS 和 Azure 提供全面支持。
IronXL 可以像 Microsoft Excel 一樣執行計算,並支援多種欄位資料格式,例如文字、整數、公式、日期、貨幣和百分比。
如需了解更多,請點擊IronXL網站。
在使用 IronXL 框架之前,必須在 Visual Studio 中創建一個 .NET 專案。 任何版本的 Visual Studio 都可以使用,但建議使用最新版本。 您可以根據需求創建各種專案範本或類似 Windows Forms 的應用程式。 本教程將使用 Windows Forms 應用程式來簡化流程。
在 Visual Studio 中創建一個新專案
選擇項目模板後,提供項目的名稱和位置。
配置專案
接下來,選擇以下結構。 此專案將使用 .NET Framework 4.7。
!如何在 C# 中將 Excel 轉換為 Datagridview,圖 3:.NET Framework 選擇
.NET Framework 選擇
生成專案檔案後,您可以在設計工具中打開 Form1.cs
文件來插入程式碼、設計介面,以及建置/運行程式。 接著,您將需要下載解決方案所需的IronXL程式庫。 您可以在封裝管理器中使用以下代碼下載封裝:
Install-Package IronXL.Excel
在套件管理器控制台中安裝IronXL套件
或者,您可以使用 NuGet 套件管理器來搜尋並下載「IronXL」套件。 NuGet 套件管理器提供了一種方便的方式來管理您專案中的相依性。
在 NuGet 套件管理器 UI 中搜尋並安裝 IronXL 套件
在這個表單上,放置了一個DataGridView
控制項,將所需的Excel文件載入到DataGridView
控制項中。
IronXL 是一個強大的 Excel 程式庫,只需幾行代碼即可讀取 Excel 文件。 以下是演示如何將 Excel 資料匯入DataGridView
的範例代碼片段:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
namespace DataTableWindowsForm
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string ImportFilePath=string.Empty;
openFileDialog1.Filter = "Excel (*.xlsx)
*.xlsx";
DialogResult Result= openFileDialog1.ShowDialog();
if (Result == DialogResult.OK)
{
ImportFilePath = openFileDialog1.FileName;
}
if(ImportFilePath!=string.Empty)
{
var exceldoc=IronXL.WorkBook.LoadExcel(ImportFilePath);
var Edataset = exceldoc.ToDataSet().Tables [0];
for (int i = 0; i < Edataset.Columns.Count; i++)
{
Edataset.Columns [i].ColumnName = Edataset.Rows [0].ItemArray [i].ToString();
//dataGridView1.Rows [i].HeaderCell.Value = Edataset.Rows [0].ItemArray [i];
}
dataGridView1.DataSource = Edataset;
dataGridView1.Rows.RemoveAt(0);
}
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
namespace DataTableWindowsForm
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string ImportFilePath=string.Empty;
openFileDialog1.Filter = "Excel (*.xlsx)
*.xlsx";
DialogResult Result= openFileDialog1.ShowDialog();
if (Result == DialogResult.OK)
{
ImportFilePath = openFileDialog1.FileName;
}
if(ImportFilePath!=string.Empty)
{
var exceldoc=IronXL.WorkBook.LoadExcel(ImportFilePath);
var Edataset = exceldoc.ToDataSet().Tables [0];
for (int i = 0; i < Edataset.Columns.Count; i++)
{
Edataset.Columns [i].ColumnName = Edataset.Rows [0].ItemArray [i].ToString();
//dataGridView1.Rows [i].HeaderCell.Value = Edataset.Rows [0].ItemArray [i];
}
dataGridView1.DataSource = Edataset;
dataGridView1.Rows.RemoveAt(0);
}
}
}
}
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Threading.Tasks
Imports System.Windows.Forms
Imports System.Windows.Forms.VisualStyles.VisualStyleElement.Window
Namespace DataTableWindowsForm
Partial Public Class Form1
Inherits Form
Public Sub New()
InitializeComponent()
End Sub
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim ImportFilePath As String=String.Empty
openFileDialog1.Filter = "Excel (*.xlsx) *.xlsx"
Dim Result As DialogResult= openFileDialog1.ShowDialog()
If Result = System.Windows.Forms.DialogResult.OK Then
ImportFilePath = openFileDialog1.FileName
End If
If ImportFilePath<>String.Empty Then
Dim exceldoc=IronXL.WorkBook.LoadExcel(ImportFilePath)
Dim Edataset = exceldoc.ToDataSet().Tables (0)
For i As Integer = 0 To Edataset.Columns.Count - 1
Edataset.Columns (i).ColumnName = Edataset.Rows (0).ItemArray (i).ToString()
'dataGridView1.Rows [i].HeaderCell.Value = Edataset.Rows [0].ItemArray [i];
Next i
dataGridView1.DataSource = Edataset
dataGridView1.Rows.RemoveAt(0)
End If
End Sub
End Class
End Namespace
上述程式碼從 Excel 匯入資料。 為了提供更多背景資訊,假設我們在設計一個具有DataGridView
控制項和按鈕的 Windows Forms 應用程式。 該按鈕將打開一個對話框,以從特定位置瀏覽 Excel 文件。 已添加自定義代碼以篩選並顯示僅限特定擴展名的有限數量文件。
打開一個對話框以選擇 Excel 檔案
然後,使用LoadExcel
方法從 Excel 文件中載入資料。此方法允許從多種來源載入資料,例如檔名、位元組或流。 如果 Excel 文件受密碼保護,我們也可以將密碼作為參數傳遞。
一旦 Excel 詳細資料載入到 IronXL 對象中,就使用 ToDataSet
方法將 Excel 工作表數據轉換為數據集。 Excel 文件中的每個工作表將被轉換為數據集中的一個單獨表格。
然後,從數據集加載所需的表到DataGridView
。 要做到這一點,需要將 DataGridView
的 DataSource
屬性設置為從 IronXL 新創建的 DataTable
對象。 此步驟允許將 Excel 檔案中的數據填入DataGridView
。
顯示來自 Excel 文件的數據
此外,Excel 標題名稱也會分配給 DataGridView
標題。 此外,我們移除了任何包含 Excel 欄位作為列資料的 DataTable
中的額外資訊欄位。 這確保只有相關的數據顯示在DataGridView
中。
如需有關使用 IronXL 的更多教程,請點擊此操作指南。
IronXL 是一個非常受歡迎的 Excel 工具,不依賴於外部庫。 這是一個獨立的解決方案,無需安裝 Microsoft Excel。 它兼容多種平台。
使用 IronXL,您可以以程式化方式完成與 Microsoft Excel 文件相關的各種操作。 您可以執行諸如排序字串或數字、修剪和添加數據、查找和替換值、合併和取消合併儲存格、保存文件等任務。 它還允許您驗證試算表資料並定義儲存格資料類型。 此外,IronXL 支援讀取和寫入 CSV 檔案。
IronXL 可供購買,價格為 $749。 顧客也可以選擇支付年度會費以獲得更新和產品支援。 IronXL 提供無限制重新分發權,但需支付額外費用。 若要獲取更詳細的定價資訊,您可以造訪授權頁面。