IRONSOFTWAREHOME
USING IRONXL

如何在 ASP.NET C# 中將 Excel 匯入 GridView

Curtis Chau
Curtis Chau
Updated: 2026年6月28日

在ASP.NET C#中將Excel資料導入GridView非常簡單,使用IronXL。 您載入工作簿,將工作表轉換為GridView控制項——全部不需OLEDB驅動或複雜的連接字串。

**自己試試:**獲取IronXL的免費試用版來跟隨下面的程式程式碼範例。

如何安裝IronXL以整合Excel GridView?

在編寫任何程式程式碼之前,您需要將IronXL新增到您的ASP.NET專案中。 最快的途徑是使用NuGet,可以從Visual Studio包管理器控制台或.NET CLI。

PM > Install-Package IronXL.Excel

安裝後,NuGet會將所有必需的引用新增到您的專案中。 不需安裝外部驅動,不需註冊OLEDB提供程式,且伺服器上無需依賴Microsoft Office。 該程式庫以單一的托管程式集發佈,並可在Windows、Linux、macOS及包括Azure應用服務的雲託管環境中運行。

安裝後,將以下命名空間新增到任何讀取或寫入Excel資料的程式程式碼後面的文件中:

using IronXL;
using System.Data;
using System.IO;

IronXL支持.xls(Excel 97-2003)和.xlsx(Excel 2007+)格式,因此您不需要單獨處理每種文件型別。 相同的WorkBook.Load調用通過自動檢查文件簽名來處理任一格式。

為何跳過OLEDB進行GridView資料綁定?

傳統的基於OLEDB的Excel導入需要Microsoft Access Database Engine(ACE或JET),必須在伺服器上安裝正確的位版本(32位或64位)。 由於驅動缺失或不匹配,跨不同伺服器環境的部署通常失敗,而且Microsoft不再預設隨附Windows 64位ACE驅動。

IronXL完全消除了這一依賴。 它直接在托管程式碼中讀取原生Open XML或BIFF格式。 您在開發、預演和生產中得到可預測的行為,無需考慮驅動版本問題。

IronXL針對哪些.NET平台?

IronXL針對.NET 10、.NET 8、.NET Standard 2.0和.NET Framework 4.6.2+。 這意味著無論您的ASP.NET應用程式是在傳統Web Forms、ASP.NET MVC或現代ASP.NET Core Razor Pages上運行,您可以使用相同的程式庫,而無需對Excel處理層進行任何程式碼更改。 您可以在NuGet.org上找到IronXL包,以在安裝前檢查版本歷史和發佈說明。

將Excel資料載入到GridView的最快方法是什麼?

最快的方法是將GridView.DataBind合併成大約四行有效程式碼。 對於基本場景,不需要手動建立列,也不需要逐行迭代。

using IronXL;
using System.Data;

WorkBook workBook = WorkBook.Load("data.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// true = treat first row as column headers
DataTable dataTable = sheet.ToDataTable(true);

GridView1.DataSource = dataTable;
GridView1.DataBind();

DataTable中將工作表的第一行提升為列名。 當您將該表綁定到AutoGenerateColumns="true",ASP.NET會自動為每個Excel標題建立一列。

ToDataTable如何處理混合資料型別?

預設情況下,當您調用string儲存。 如果您的應用程式需要型別化的列——例如,價格資料的DataTable之前將它們轉換為相應的.NET型別。

對於簡單的在GridView中顯示,字串列就足夠了,因為網格渲染的所有值都是文字。

如何建立ASP.NET Web Forms頁面以導入Excel?

最低限度的導入頁面需要三個控件:文件上傳輸入、提交按鈕和GridView。 在您的<form runat="server">元素內新增以下ASPX標記:

<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="Upload Excel File"
    OnClick="btnUpload_Click" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true"
    CssClass="table table-bordered" />

如果您正在使用Bootstrap樣式表,則CssClass屬性將網格連接到樣式表中,讓您獲得風格化的行和邊框而無需額外配置。

在程式碼後面處理按鈕點擊事件。 下面的模式將上傳的文件保存到臨時伺服器路徑,用IronXL載入,並將結果DataTable綁定到網格中:

using IronXL;
using System.Data;
using System.IO;

void btnUpload_Click(object sender, EventArgs e)
{
    if (!FileUpload1.HasFile) return;

    string uploadDir = Server.MapPath("~/Uploads/");
    Directory.CreateDirectory(uploadDir); // ensure directory exists

    string filePath = Path.Combine(uploadDir, Path.GetFileName(FileUpload1.FileName));
    FileUpload1.SaveAs(filePath);

    WorkBook workBook = WorkBook.Load(filePath);
    WorkSheet sheet = workBook.DefaultWorkSheet;
    DataTable dt = sheet.ToDataTable(true);

    GridView1.DataSource = dt;
    GridView1.DataBind();

    // Store for later export operations
    Session["CurrentData"] = dt;
}

此實作遵循頂級語句樣式進行事件處理器內的邏輯,同時保留必要的Web Forms事件簽名。 請注意,Uploads文件夾已存在,則調用無操作。

用IronXL將Excel導入至ASP.NET C#中的GridView:上傳的電子表格資料在GridView控件中渲染

使用者選擇.xlsx文件並點擊上傳按鈕後,該網格將填充電子表格的內容。 列名來自Excel文件的第一行,隨後的所有行將成為網格中的資料行。

應如何驗證上傳的文件?

在生產使用中,您應在處理之前檢查文件擴展名和MIME型別。 IronXL會拋出不支持的文件格式異常,但最好在控制器層拒絕不良上傳而不觸及文件系統:

string ext = Path.GetExtension(FileUpload1.FileName).ToLowerInvariant();
string[] allowed = { ".xls", ".xlsx" };

if (!allowed.Contains(ext))
{
    lblError.Text = "Only .xls and .xlsx files are accepted.";
    return;
}

您還應通過IIS請求限制強制執行最大文件大小,或在調用FileUpload1.FileBytes.Length與門檻值進行比較。

如何存取特定工作表和單元格範圍?

如果Excel工作簿包含多個工作表,您需要按名稱定向到特定工作表,避免依賴DefaultWorkSheet。 IronXL提供了一個GetWorkSheet方法,接受工作表標籤名稱作為字串。

using IronXL;
using System.Data;

WorkBook workBook = WorkBook.Load("sales-report.xlsx");

// Access a named sheet
WorkSheet salesSheet = workBook.GetWorkSheet("Q4 Sales");

// Read a specific cell range
var topTen = salesSheet["A1:E11"];

// Convert the entire workbook to a DataSet (one DataTable per sheet)
DataSet allSheets = workBook.ToDataSet();

// Bind the first sheet's DataTable to the grid
GridView1.DataSource = allSheets.Tables[0];
GridView1.DataBind();

ToDataSet方法在您的應用程式需要顯示多個工作表的資料或讓使用者選擇要查看的工作表時非常有用。 返回的DataTable對應一個Excel工作表,表名與工作表標籤名稱匹配。

用IronXL將Excel導入至ASP.NET C#中的GridView:命名工作表資料綁定到GridView

如何在綁定到GridView前篩選行?

如果您只想要Excel行的子集——例如,"狀態"列等於"啟用"——請讀取DataView篩選,並將篩選視圖綁定到網格:

DataTable dt = sheet.ToDataTable(true);
DataView dv = new DataView(dt)
{
    RowFilter = "Status = 'Active'"
};

GridView1.DataSource = dv;
GridView1.DataBind();

DataView.RowFilter接受標準SQL WHERE子句語法——該語言在Microsoft Learn上的DataColumn.Expression屬性中記錄——使您在不載入資料庫的情況下進行排序和篩選。

如何比較Excel GridView綁定的導入方法?

不同的Excel到GridView綁定方法具有不同的權衡。 下表總結了最常見的方法,以便您選擇適合您場景的方法。

ASP.NET GridView綁定的Excel導入方法比較
方法需要驅動程式XLS支持支援XLSX伺服器依賴程式碼複雜性
IronXL(ToDataTable)否ne否ne
OLEDB / JETACE/JET引擎部分32/64位驅動
Open XML SDK否ne否ne
EPPlus否ne無(需要生產商業授權)

IronXL涵蓋了舊版XLS和現代的XLSX格式,不需要伺服器端驅動程式安裝,並在所列選項中提供最低的程式碼複雜性。 對於已經使用其它Iron Software產品(例如IronPDFIronOCR)的團隊,一個Iron Software授權涵蓋整個產品套件。

如何將GridView資料導出回Excel?

完成整個往返——從Excel到網格再回到Excel——同樣可以用IronXL簡單實現。 此模式對於"下載為Excel"按鈕很實用,讓使用者導出當前顯示在網格中的任何東西。

void btnExport_Click(object sender, EventArgs e)
{
    DataTable dt = Session["CurrentData"] as DataTable;
    if (dt == null) return;

    WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet ws = workBook.CreateWorkSheet("Export");

    // Write header row
    for (int col = 0; col < dt.Columns.Count; col++)
        ws.SetCellValue(0, col, dt.Columns[col].ColumnName);

    // Write data rows
    for (int row = 0; row < dt.Rows.Count; row++)
        for (int col = 0; col < dt.Columns.Count; col++)
            ws.SetCellValue(row + 1, col, dt.Rows[row][col]?.ToString() ?? string.Empty);

    string exportDir = Server.MapPath("~/Exports/");
    Directory.CreateDirectory(exportDir);
    string exportPath = Path.Combine(exportDir, "export.xlsx");
    workBook.SaveAs(exportPath);

    Response.Clear();
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("Content-Disposition", "attachment; filename=export.xlsx");
    Response.TransmitFile(exportPath);
    Response.End();
}

Response.TransmitFile調用將保存的文件流到瀏覽器,觸發下載對話框。 Content-Disposition: attachment標頭確保瀏覽器下載文件而不是嘗試內嵌顯示。

用IronXL將Excel導入至ASP.NET C#中的GridView:DataTable導出回Excel文件

IronXL常見的導出格式選項有哪些?

除了原始資料,IronXL允許您在保存之前應用單元格格式。 您可以設置加粗的標題、列寬、數字格式和背景顏色:

// Bold the header row
ws["A1:Z1"].Style.Font.Bold = true;

// Apply a currency format to column C (index 2), rows 2 onward
ws[$"C2:C{dt.Rows.Count + 1}"].FormatString = IronXL.Styles.BuiltinFormats.Accounting2;

// Auto-fit column widths (IronXL approximates based on content length)
ws.AutoSizeColumn(0);
ws.AutoSizeColumn(1);

這些格式調用使用IronXL單元格樣式API,該API反映了Excel文件格式的物件模型而無需Interop。

您接下來的步驟是什麼?

您現在擁有一個完整的、無需驅動的管道來使用IronXL將Excel文件導入ASP.NET GridView中,並將GridView資料導出回Excel。 這是您接下來可以探索以構建此基礎的內容:

  • 閱讀IronXL文件,了解完整的API參考,包括公式評估、單元格範圍操作和圖表建立。
  • **探索IronXL程式碼範例**庫以獲得可直接運行的程式碼片段,涵蓋CSV導入、受密碼保護的工作簿、條件格式等。
  • 嘗試Excel到DataTable教程,如果您想深入了解型別列映射和空值處理。
  • **查看IronXL授權頁面**以查看從開發授權到OEM再分發的選項。
  • 審查Iron Software的.NET Excel閱讀指南,以深入了解工作簿和工作表導航。
  • 比較IronXL與替代方案,使用C# Excel庫比較,進行功能逐項對比,包括OLEDB、EPPlus和Open XML SDK。

對於.NET Core和ASP.NET Core應用程式,相同的IronXL API可以在Razor Pages和MVC控制器中使用。 IronXL ASP.NET Core指南通過文件上傳處理和依賴注入模式的差異進行指導。

IronXL免費試用開始,以在購買前測試您的專案中的所有功能。 試用授權不需要信用卡。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
預約您的免費即時演示
Booking Badge

全球數百萬工程師的信賴

Iron Software的客戶標誌
獲得無義務諮詢
填寫以下表格或電郵sales@ironsoftware.com
您的資料將始終保密。
全球數百萬工程師的信賴
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立