如何使用 C# 在 Excel 中建立超連結

如何使用 C# 在 Excel 中建立超連結

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronXL 讓 C# 開發人員能夠在 Excel 儲存格中建立各種超連結,包括 URL、檔案路徑、電子郵件地址和儲存格參照,且無需使用 Interop,從而簡化在試算表中加入互動式導覽的功能。

Excel 超連結可提供可點擊的參考連結,指向工作簿內的特定位置、其他檔案、網頁或電子郵件地址。 這些工具能提升導覽體驗,讓使用者能快速存取相關資訊與外部資源。 超連結可建立互動且易於使用的試算表,便於輕鬆存取額外資料或外部內容。

IronXL 允許為 URL 建立超連結,並能開啟來自本地及 FTP(檔案傳輸協定)檔案系統的外部檔案、電子郵件地址、儲存格位址,以及已定義名稱的儲存格,且無需在 .NET C# 中使用 Interop。 此功能對於在商業應用程式中透過程式化方式處理 Excel 檔案至關重要。

快速入門:只需幾個步驟,即可使用 IronXL 加入超連結

此範例展示了使用 IronXL 在 Excel 儲存格中新增網頁超連結是多麼簡單。 只需幾行代碼——建立工作簿、設定儲存格值、指派超連結並儲存——您就能在試算表中建立一個互動式連結。 若需更全面的 Excel 操作指南,請參閱我們關於使用 C# 編輯 Excel 檔案的指南。

  1. using NuGet 套件管理員安裝 https://www.nuget.org/packages/IronXL.Excel

    PM > Install-Package IronXL.Excel
  2. 請複製並執行此程式碼片段。

    IronXl.WorkBook workbook = IronXl.WorkBook.Create(IronXl.ExcelFileFormat.XLSX);
    workbook.DefaultWorkSheet.GetCellAt(0, 0).Value = "Visit IronXL Docs";
    workbook.DefaultWorkSheet.GetCellAt(0, 0).Hyperlink = "https://ironsoftware.com";
    workbook.SaveAs("hyperlink_quick.xlsx");
  3. 部署至您的生產環境進行測試

    立即透過免費試用,在您的專案中開始使用 IronXL

    arrow pointer

我需要哪些先決條件?

在實作超連結之前,請確保您的 .NET 專案中已安裝 IronXL。 您還需具備 IronXL 中選取範圍管理工作表的基本知識。 此函式庫支援 .NET Framework 4.6.2 以上版本以及 .NET Core 5/6/7/8 以上版本,使其與大多數現代 .NET 應用程式相容。


如何在 Excel 儲存格中建立 URL 超連結?

Hyperlink 屬性存在於 Cell 類別中。 worksheet["A1"] 程式碼會傳回一個 Range 物件; 使用 First 方法存取範圍中的第一個儲存格。

或者,您可以使用 GetCellAt 方法直接存取該儲存格,藉此直接存取 Hyperlink 屬性。 此方法在處理試算表中的特定儲存格座標時特別有用。

讓我們來探討建立連結超連結的範例。 同時支援 HTTP 與 HTTPS 協定,讓您能夠連結至安全與非安全的網路資源。 建立超連結時,請考慮結合儲存格格式設定,使其在視覺上與一般文字有所區別。

警告使用 GetCellAt 方法選取未修改的儲存格時,將引發 System.NullReferenceException:'物件參考未設定為物件的實例。'

:path=/static-assets/excel/content-code-examples/how-to/hyperlinks-set-link-hyperlink.cs
using IronXL;

WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Modify the cell's property
workSheet["A1"].Value = "Link to ironpdf.com";

// Set hyperlink at A1 to https://ironpdf.com/
workSheet.GetCellAt(0, 0).Hyperlink = "https://ironpdf.com/";

workBook.SaveAs("setLinkHyperlink.xlsx");
Imports IronXL

Private workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Private workSheet As WorkSheet = workBook.DefaultWorkSheet

' Modify the cell's property
Private workSheet("A1").Value = "Link to ironpdf.com"

' Set hyperlink at A1 to https://ironpdf.com/
workSheet.GetCellAt(0, 0).Hyperlink = "https://ironpdf.com/"

workBook.SaveAs("setLinkHyperlink.xlsx")
$vbLabelText   $csharpLabel

點擊生成的超連結後會發生什麼?

當您點擊使用 IronXL 建立的超連結時,Excel 會提示您在預設的網頁瀏覽器中開啟該連結的 URL。 該儲存格在新增超連結功能時,會保留原始值,讓您既能保留說明文字,又能實現導航功能。 無論您是在本地端處理 Excel 檔案,還是部署至雲端環境,此行為皆保持一致。

Excel spreadsheet showing 'Link to rongdf.com' text in cell A1, demonstrating hyperlink creation setup

如何在不同工作表之間建立超連結?

若要建立指向同一工作表內某個儲存格的超連結,請使用該儲存格的位址,例如 Z20。 若要在工作表之間建立超連結,請使用 worksheetName!address 這種格式。 例如,Sheet2!A1。 在建立包含多個工作表的複雜 Excel 報表時,此跨工作表連結功能至關重要。

已定義的名稱儲存格可具有工作簿(全域)或工作表範圍。 若要建立指向同一工作表內已定義名稱,或工作簿範圍內已定義名稱的超連結,請直接指定該名稱。 若要在不同工作表上為具有工作表範圍的定義名稱建立超連結,請如上所述指定工作表名稱。 例如,Sheet2!Iron。 進一步了解如何運用命名範圍進行進階 Excel 自動化。

:path=/static-assets/excel/content-code-examples/how-to/hyperlinks-set-hyperlink-across-worksheet.cs
using IronXL;
using System.Linq;

WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet workSheet1 = workBook.CreateWorkSheet("Sheet1");
WorkSheet workSheet2 = workBook.CreateWorkSheet("Sheet2");

// Create workbook(global) define name
workSheet1["D5"].SaveAsNamedRange("Iron", true);

// Create worksheet define name
workSheet2["D10"].SaveAsNamedRange("Hello", false);

// --== Within the same worksheet ==--
// Set hyperlink to cell Z20
workSheet1["A1"].Value = "Z20";
workSheet1["A1"].First().Hyperlink = "Z20";

// Set hyperlink to define name "Iron"
workSheet1["A2"].Value = "Iron";
workSheet1["A2"].First().Hyperlink = "Iron";

// --== Across worksheet ==--
// Set hyperlink to cell A1 of Sheet2
workSheet1["A3"].Value = "A1 of Sheet2";
workSheet1["A3"].First().Hyperlink = "Sheet2!A1";

// Set hyperlink to define name "Hello" of Sheet2
workSheet1["A4"].Value = "Define name Hello of Sheet2";
workSheet1["A4"].First().Hyperlink = "Sheet2!Hello";

workBook.SaveAs("setHyperlinkAcrossWorksheet.xlsx");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

為何要使用命名範圍來建立超連結?

命名範圍可提供更易於維護的超連結,即使工作表結構重新調整後仍能保留。 當您重新命名或移動儲存格時,指向命名範圍的超連結會自動更新,從而減少 Excel 應用程式中的斷鏈。 此方法在資料位置可能變動的動態報表中尤為實用。

Excel worksheet showing hyperlink setup with 'A1 of Sheet2' reference and defined name for cross-sheet linking

工作簿範圍與工作表範圍有何區別?

工作簿範圍(全域)的命名範圍可在工作簿內的任何工作表中存取,而工作表範圍的命名範圍則僅限於其特定工作表內存取。 建立指向命名範圍的超連結時,工作簿範圍名稱雖提供較高彈性,但工作表範圍名稱對於工作表專屬資料而言,能提供更好的封裝效果。 在管理複雜 Excel 應用程式中的多個工作表時,此區別至關重要。


如何建立檔案、FTP 及電子郵件超連結?

除了前述的超連結類型外,IronXL 亦支援建立 FTP、檔案及電子郵件超連結。 這些專用的超連結類型,能將您的 Excel 自動化功能擴展至簡單的網頁連結之外。

  • FTP:從 ftp:// 開始 - 連結至 FTP 伺服器上的檔案
  • 檔案:指定以 file:/// 開頭的絕對路徑 - 連結至本機或網路檔案
  • 電子郵件:以 mailto: 開頭 - 建立可點擊的電子郵件地址

請注意FTP 和檔案超連結均需使用絕對路徑。

:path=/static-assets/excel/content-code-examples/how-to/hyperlinks-set-other-hyperlink.cs
using IronXL;
using System.Linq;

WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Set hyperlink to open file sample.xlsx
workSheet["A1"].Value = "Open sample.xslx";
workSheet["A1"].First().Hyperlink = "ftp://C:/Users/sample.xlsx";

// Set hyperlink to open file sample.xlsx
workSheet["A2"].Value = "Open sample.xslx";
workSheet["A2"].First().Hyperlink = "file:///C:/Users/sample.xlsx";

// Set hyperlink to email example@gmail.com
workSheet["A3"].Value = "example@gmail.com";
workSheet["A3"].First().Hyperlink = "mailto:example@gmail.com";

workBook.SaveAs("setOtherHyperlink.xlsx");
Imports IronXL
Imports System.Linq

Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet

' Set hyperlink to open file sample.xlsx
workSheet("A1").Value = "Open sample.xslx"
workSheet("A1").First().Hyperlink = "ftp://C:/Users/sample.xlsx"

' Set hyperlink to open file sample.xlsx
workSheet("A2").Value = "Open sample.xslx"
workSheet("A2").First().Hyperlink = "file:///C:/Users/sample.xlsx"

' Set hyperlink to email example@gmail.com
workSheet("A3").Value = "example@gmail.com"
workSheet("A3").First().Hyperlink = "mailto:example@gmail.com"

workBook.SaveAs("setOtherHyperlink.xlsx")
$vbLabelText   $csharpLabel

何時該使用檔案超連結,何時該使用 FTP 超連結?

對於可透過 Windows 檔案系統存取的本地檔案或網路共用資料夾,請使用檔案超連結 (file:///)。 FTP 超連結 (ftp://) 非常適合用於連結 FTP 伺服器上的檔案,特別是在 Enterprise 環境中,文件通常儲存於專用的檔案伺服器上。 使用 FTP 連結時請考量安全性影響,因其可能以明文傳輸憑證。

Other Types of Hyperlinks

點擊 Mailto 連結時會開啟哪個電子郵件客戶端?

當使用者在 Excel 中點擊 mailto 連結時,系統會開啟預設的電子郵件客戶端,並預先填入指定電子郵件地址的新郵件。 此功能適用於 Outlook、Thunderbird 以及設定為系統預設的網頁式電子郵件客戶端。 您可以使用標準 mailto 語法 mailto:example@gmail.com?subject=Hello&body=Message,為 mailto 連結添加主旨和內文。


如何從 Excel 儲存格中移除超連結?

若要移除超連結,請呼叫 RemoveHyperlink 方法。 可透過 cell 物件存取此方法。 在清理資料或將連結報告轉換為靜態文件時,移除超連結會很有幫助。

:path=/static-assets/excel/content-code-examples/how-to/hyperlinks-remove-hyperlink.cs
using IronXL;
using System.Linq;

WorkBook workBook = WorkBook.Load("setLinkHyperlink.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Remove hyperlink
workSheet["A1"].First().RemoveHyperlink();

workBook.SaveAs("removeHyperlink.xlsx");
Imports IronXL
Imports System.Linq

Private workBook As WorkBook = WorkBook.Load("setLinkHyperlink.xlsx")
Private workSheet As WorkSheet = workBook.DefaultWorkSheet

' Remove hyperlink
workSheet("A1").First().RemoveHyperlink()

workBook.SaveAs("removeHyperlink.xlsx")
$vbLabelText   $csharpLabel

移除超連結會刪除儲存格內容嗎?

不,移除超連結並不會影響儲存格的數值與格式。 僅移除超連結功能,保留顯示文字內容。 這使得在移除超連結時不會造成資料遺失,這在轉換試算表檔案類型或準備文件進行歸檔時尤為重要。

如何一次移除多個超連結?

若要高效移除多個超連結,請遍歷一組儲存格,或使用 LINQ 處理包含超連結的儲存格:

// Remove all hyperlinks in column A
for (int i = 1; i <= 10; i++)
{
    var cell = workSheet.GetCellAt(i, 0);
    if (cell != null && !string.IsNullOrEmpty(cell.Hyperlink))
    {
        cell.RemoveHyperlink();
    }
}
// Remove all hyperlinks in column A
for (int i = 1; i <= 10; i++)
{
    var cell = workSheet.GetCellAt(i, 0);
    if (cell != null && !string.IsNullOrEmpty(cell.Hyperlink))
    {
        cell.RemoveHyperlink();
    }
}
' Remove all hyperlinks in column A
For i As Integer = 1 To 10
    Dim cell = workSheet.GetCellAt(i, 0)
    If cell IsNot Nothing AndAlso Not String.IsNullOrEmpty(cell.Hyperlink) Then
        cell.RemoveHyperlink()
    End If
Next
$vbLabelText   $csharpLabel

此方法特別適用於清理匯入的資料,或準備供分發使用的試算表時——在這些情境中,超連結可能並不合適。 若需更進階的儲存格操作技巧,請參閱我們關於選取範圍及處理範圍的指南。

常見問題

如何使用 C# 在 Excel 中建立超連結?

您可透過 IronXL 輕鬆在 Excel 中建立超連結,方法是存取儲存格並設定其 Hyperlink 屬性。只需載入或建立工作簿,使用 GetCellAt() 或工作表索引器取得目標儲存格,然後將 URL 字串指派給該儲存格的 Hyperlink 屬性。IronXL 會自動處理所有複雜的 Excel 格式設定,無需使用 Microsoft Interop。

在 Excel 儲存格中可以建立哪些類型的超連結?

IronXL 支援建立多種超連結類型,包括:外部網站的網址、用於開啟本地或 FTP 檔案的檔案路徑、帶有 mailto 連結的電子郵件地址、同一工作表內的儲存格參照,以及對已定義名稱儲存格的參照。所有這些超連結類型皆可透過 IronXL 中的同一 Hyperlink 屬性來實作。

要在 Excel 檔案中加入超連結,是否需要安裝 Microsoft Office?

不,IronXL 可獨立運作,無需 Microsoft Office 或 Interop 組件。此程式庫包含所有必要元件,可讓您直接在 .NET 應用程式中建立、讀取及修改帶有超連結的 Excel 檔案,因此非常適合無法安裝 Office 的伺服器環境。

哪些 .NET Framework 框架支援建立 Excel 超連結?

IronXL 支援廣泛的 .NET Framework,包括 .NET Framework 4.6.2 及更高版本,以及 .NET Core、.NET 5、6、7 和 8+。這種廣泛的相容性確保您能夠將 IronXL 的超連結功能整合到傳統應用程式和現代 .NET 專案中。

我可以為現有的 Excel 檔案新增超連結,還是只能新增超連結到新檔案?

IronXL 讓您能夠在新的或現有的 Excel 檔案中加入超連結。您可以透過 WorkBook.Load() 載入現有的工作簿,存取任何儲存格或範圍,並在不影響試算表中其他內容或格式的情況下加入超連結。此程式庫在新增互動元素的同時,會完整保留現有資料。

如何存取特定儲存格以新增超連結?

IronXL 提供多種存取儲存格以新增超連結的方式。您可以使用 GetCellAt() 並傳入列與欄索引,或使用工作表索引器搭配儲存格位址,例如 worksheet["A1"]。若要處理範圍,請使用 First 方法取得第一個儲存格。此程式庫亦支援選取範圍以進行批次超連結操作。

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
Nuget 下載 2,052,917 | 版本: 2026.6 just released
Still Scrolling Icon

還在捲動嗎?

想要快速證明? PM > Install-Package IronXL.Excel
執行範例 觀看您的資料變成試算表。