在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
這篇博客將比較和對比如何在 .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。
.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
標題。 此外,我們從 DataTable
中移除了包含 Excel 列作為行資料的任何其他資訊列。 這確保 DataGridView
中只顯示相關數據。
如需更多關於使用 IronXL 的教程,請點擊這個操作指南.
IronXL 是一個非常受歡迎的 Excel 工具,不依賴於外部庫。 這是一個獨立的解決方案,無需安裝 Microsoft Excel。 它兼容多種平台。
使用 IronXL,您可以以程式化方式完成與 Microsoft Excel 文件相關的各種操作。 您可以執行的任務包括排序字串或數字、修剪和新增資料、查找和替換值,合併和取消合併儲存格儲存檔案等。 它也允許您驗證電子表格數據並定義單元格數據類型. 此外,IronXL 支持讀取和撰寫 CSV 檔案.
IronXL 可購買價為 $749。 顧客也可以選擇支付年度會費以獲得更新和產品支援。 IronXL 提供無限制重新分發權,但需支付額外費用。 要獲取更詳細的定價資訊,您可以造訪授權頁面.