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

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

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

IronXL讓C#開發者能夠在Excel儲存格中建立多種超連結,包括URL、文件路徑、電子郵件地址和儲存格參考,而不需使用Interop,簡化了在試算表中新增互動導航的過程。

Excel 超連結提供可以點擊的參考到工作簿中的位置、不同的檔案、網頁或電子郵件地址。 它們增強了導航功能,允許快速存取相關資訊和外部資源。 超連結建立互動和使用者友好的試算表,方便輕鬆存取附加資料或外部內容。

IronXL使得在.NET C#中,不使用Interop就能建立URL超連結以打開外部文件,無論是從本機或FTP(File Transfer Protocol)文件系統、電子郵件地址、儲存格地址和定義名稱儲存格。 當在商業應用中以程式方式處理Excel文件時,這項功能是必不可少的。

快速入門:僅需幾步驟便可使用IronXL新增超連結

此範例顯示了如何輕鬆地使用IronXL在Excel儲存格中新增網頁超連結。 僅需幾行程式碼 - 建立工作簿、設置儲存格值、指定超連結並保存 - 您就能在試算表中擁有一個互動連結。 如需更全面的Excel操作,請探索我們關於編輯C#中的Excel文件的指南。

  1. 使用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類中。 Range物件; 使用First方法存取範圍內的第一個儲存格。

或者,直接使用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 試算表在儲存格 A1 顯示 'Link to rongdf.com' 文字,示範超連結建立設定

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

要建立指向同一工作表內儲存格的超連結,請使用儲存格的地址,例如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 工作表顯示超連結設定,含 'A1 of Sheet2' 參照與用於跨工作表連結的已定義名稱

工作簿範圍與工作表範圍有什麼不同?

具有工作簿範圍(全域)的命名範圍在工作簿內的任何工作表中都可存取,然而工作表範圍的名稱僅能在其特定工作表中存取。 在建立指向命名範圍的超連結時,工作簿範圍的名稱提供了更多的靈活性,而工作表範圍的名稱則為工作表特定資料提供了更好的封裝。 當在複雜的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超連結?

使用文件超連結(file:///)來存取通過Windows文件系統可存取的本地文件或網路共享。 FTP超連結(ftp://)在企業環境中尤其適合用於連結到FTP伺服器上的文件,在這些環境中文件常儲存於專用文件伺服器上。 考慮使用FTP連結的安全問題,因該連結可能以明文傳輸憑證。

其他型別的超連結

當點擊Mailto連結時,會打開什麼電子郵件客戶端?

當使用者點擊Excel中的mailto連結時,他們的預設電郵客戶端會打開一封已預先填寫了收件人地址的新郵件。 這適用於已設為系統預設的Outlook、Thunderbird和基於網頁的電子郵件客戶端。 您可以使用標準的mailto語法來增強mailto連結,比如新增主題和正文文字:mailto:example@gmail.com?subject=Hello&body=Message


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

要移除超連結,請調用RemoveHyperlink方法。 可以從儲存格物件中存取此方法。 在清理資料或將連結報告轉換成靜態文件時,移除超連結是有益的。

: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中建立超連結?

您可以通過存取單元格並設置其Hyperlink屬性,使用IronXL輕鬆建立Excel中的超連結。只需載入或建立工作簿,使用GetCellAt()或工作表索引器獲取所需單元格,然後將URL字串分配給單元格的Hyperlink屬性。IronXL自動處理所有複雜的Excel格式,而不需要使用Microsoft Interop。

可以在Excel單元格中建立哪些型別的超連結?

IronXL支持建立各種型別的超連結,包括:外部網站的Web URL、本地或FTP檔案的檔案路徑、帶有mailto連結的電子郵件地址、同一工作表中的單元格引用以及對定義名稱單元格的引用。所有這些超連結型別都可以使用IronXL中的同一Hyperlink屬性實施。

我需要安裝Microsoft Office來向Excel檔案新增超連結嗎?

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

支持建立Excel超連結的.NET框架有哪些?

IronXL支持廣泛的.NET框架,包括.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大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

準備好開始了嗎?
Nuget 下載 2,134,203 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

仍在滾動嗎?

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