如何在C#中管理Excel命名範圍

如何在 C# 中使用 IronXL 新增命名範圍

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

命名範圍是一個由唯一名稱識別的指定儲存格範圍。 與其用儲存格地址(如 A1:B10)來引用範圍,您可以為範圍指定名稱,使其在公式和函式中更易於引用和理解。 例如,如果您將範圍命名為 "SalesData",您可以在公式中使用 SUM(SalesData) 來引用它,而不是直接指定儲存格範圍。

在處理 C# 中的 Excel 公式 時,命名範圍特別有用,因為它們使您的程式碼更易讀且更易維護。 與 IronXL 的強大範圍選擇功能相結合,命名範圍成為高效電子表格管理的基本工具。

快速入門:使用 IronXL 在一行中新增命名範圍

using IronXL 的單個方法調用來定義命名範圍。 選擇您的範圍並應用 SaveAsNamedRange 方法。

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/IronXL.Excel

    PM > Install-Package IronXL.Excel
  2. 複製並運行這段程式碼片段。

    new IronXL.WorkBook()
        .DefaultWorkSheet["A1:B2"].SaveAsNamedRange("MyRange", true);
  3. 部署以在您的實時環境中測試

    今天就開始在您的專案中使用IronXL,透過免費試用

    arrow pointer


如何將命名範圍新增到我的工作表中?

IronXL.Excel 要新增命名範圍,通過傳遞命名範圍的名稱作為文字和範圍物件來使用 AddNamedRange 方法。 此方法是 IronXL.Excel 完整工作表管理功能的一部分。

:path=/static-assets/excel/content-code-examples/how-to/named-range-add-named-range.cs
using IronXL;

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

// Select range
var selectedRange = workSheet["A1:A5"];

// Add named range
workSheet.AddNamedRange("range1", selectedRange);

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

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

' Select range
Private selectedRange = workSheet("A1:A5")

' Add named range
workSheet.AddNamedRange("range1", selectedRange)

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

建立命名範圍時,遵循 Excel 的命名規範非常重要:

  • 名稱必須以字母或下劃線開頭
  • 名稱不能包含空格(請使用下劃線)
  • 名稱不能與儲存格引用衝突(如 "A1" 或 "R1C1")
  • 名稱不區分大小寫,但保持一致的大小寫可以提高可讀性
Excel 名稱框顯示

命名範圍也可以用於非連續選擇或整行/整列。 對於更複雜的範圍操作,請查看結合多個 Excel 範圍的指南


如何從我的活頁簿名冊中檢索命名範圍?

哪種方法可以一次獲取所有命名範圍?

這個 GetNamedRanges 方法將工作表中的所有命名範圍作為一個字串列表返回。 這在您需要審核或記錄活頁簿中的所有命名範圍時特別有用,就像您可能載入現有試算表來分析其結構一樣。

:path=/static-assets/excel/content-code-examples/how-to/named-range-retrieve-all-named-range.cs
using IronXL;

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

// Get all named range
var namedRangeList = workSheet.GetNamedRanges();
Imports IronXL

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

' Get all named range
Private namedRangeList = workSheet.GetNamedRanges()
$vbLabelText   $csharpLabel

如何按名稱找到特定的命名範圍?

using FindNamedRange 方法來檢索命名範圍的絕對引用,例如 Sheet1!$A$1:$A$5。 然後可以使用地址公式來引用命名範圍或選擇對應於命名範圍的範圍。 選擇範圍時,應關注工作表名稱。

:path=/static-assets/excel/content-code-examples/how-to/named-range-retrieve-specific-named-range.cs
using IronXL;

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

// Get named range address
string namedRangeAddress = workSheet.FindNamedRange("range1");

// Select range
var range = workSheet[$"{namedRangeAddress}"];
Imports IronXL

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

' Get named range address
Private namedRangeAddress As String = workSheet.FindNamedRange("range1")

' Select range
Private range = workSheet($"{namedRangeAddress}")
$vbLabelText   $csharpLabel

跨多個工作表使用命名範圍

命名範圍可以具有活頁簿級別或工作表級別的範圍。 活頁簿級別的名稱可以從任何工作表中存取,而工作表級別的名稱只能在其特定工作表內存取。 此區別在管理多個工作表時非常重要。

:path=/static-assets/excel/content-code-examples/how-to/named-range-5.cs
// Example: Accessing named ranges from different worksheets
WorkBook workBook = WorkBook.Load("multisheet.xlsx");
WorkSheet sheet1 = workBook.GetWorkSheet("Sheet1");
WorkSheet sheet2 = workBook.GetWorkSheet("Sheet2");

// Both can access a workbook-level named range
var range1 = sheet1["GlobalData"];
var range2 = sheet2["GlobalData"];  // Same named range
Imports System

' Example: Accessing named ranges from different worksheets
Dim workBook As WorkBook = WorkBook.Load("multisheet.xlsx")
Dim sheet1 As WorkSheet = workBook.GetWorkSheet("Sheet1")
Dim sheet2 As WorkSheet = workBook.GetWorkSheet("Sheet2")

' Both can access a workbook-level named range
Dim range1 = sheet1("GlobalData")
Dim range2 = sheet2("GlobalData")  ' Same named range
$vbLabelText   $csharpLabel

如何從工作表中移除命名範圍?

要移除命名範圍,使用 RemoveNamedRange 方法,並將命名範圍名稱作為文字傳遞。 這對於保持清晰、有組織的活頁簿和防止更新試算表結構時命名衝突至關重要。

:path=/static-assets/excel/content-code-examples/how-to/named-range-remove-named-range.cs
using IronXL;

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

// Remove named range
workSheet.RemoveNamedRange("range1");
Imports IronXL

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

' Remove named range
workSheet.RemoveNamedRange("range1")
$vbLabelText   $csharpLabel

進階命名範圍場景

將命名範圍與公式一起使用

命名範圍在與 Excel 公式一起使用時真正發揮作用。 它們使公式更易讀且更容易維護。 如需全面的公式管理,請參看在 C# 中的 Excel 公式指南。

:path=/static-assets/excel/content-code-examples/how-to/named-range-7.cs
// Create named ranges for formula use
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Create sample data
workSheet["A1:A5"].Value = new int[] { 10, 20, 30, 40, 50 };
workSheet["B1:B5"].Value = new int[] { 5, 10, 15, 20, 25 };

// Add named ranges
workSheet.AddNamedRange("FirstColumn", workSheet["A1:A5"]);
workSheet.AddNamedRange("SecondColumn", workSheet["B1:B5"]);

// Use named ranges in formulas
workSheet["D1"].Formula = "=SUM(FirstColumn)";
workSheet["D2"].Formula = "=AVERAGE(SecondColumn)";
workSheet["D3"].Formula = "=SUM(FirstColumn) + SUM(SecondColumn)";

// Evaluate formulas
workBook.EvaluateAll();
' Create named ranges for formula use
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet

' Create sample data
workSheet("A1:A5").Value = New Integer() {10, 20, 30, 40, 50}
workSheet("B1:B5").Value = New Integer() {5, 10, 15, 20, 25}

' Add named ranges
workSheet.AddNamedRange("FirstColumn", workSheet("A1:A5"))
workSheet.AddNamedRange("SecondColumn", workSheet("B1:B5"))

' Use named ranges in formulas
workSheet("D1").Formula = "=SUM(FirstColumn)"
workSheet("D2").Formula = "=AVERAGE(SecondColumn)"
workSheet("D3").Formula = "=SUM(FirstColumn) + SUM(SecondColumn)"

' Evaluate formulas
workBook.EvaluateAll()
$vbLabelText   $csharpLabel

動態命名範圍

雖然 IronXL 不直接支持 Excel 的動態命名範圍(使用 OFFSET 或 INDEX 函式),但您可以根據資料變更以編程方式更新命名範圍:

:path=/static-assets/excel/content-code-examples/how-to/named-range-8.cs
// Update named range based on data size
WorkBook workBook = WorkBook.Load("dynamicData.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Find last row with data
int lastRow = 1;
while (!workSheet[$"A{lastRow}"].IsEmpty)
{
    lastRow++;
}
lastRow--; // Adjust to actual last row

// Remove old range and add new one
workSheet.RemoveNamedRange("DataRange");
workSheet.AddNamedRange("DataRange", workSheet[$"A1:A{lastRow}"]);
Imports IronXL

' Update named range based on data size
Dim workBook As WorkBook = WorkBook.Load("dynamicData.xlsx")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet

' Find last row with data
Dim lastRow As Integer = 1
While Not workSheet($"A{lastRow}").IsEmpty
    lastRow += 1
End While
lastRow -= 1 ' Adjust to actual last row

' Remove old range and add new one
workSheet.RemoveNamedRange("DataRange")
workSheet.AddNamedRange("DataRange", workSheet($"A1:A{lastRow}"))
$vbLabelText   $csharpLabel

用於資料驗證的命名範圍

命名範圍非常適合建立資料驗證列表和約束。 與Excel 的資料驗證功能相結合,它們提供了一種強大的方式來確保資料的完整性:

// Create a named range for validation list
workSheet["F1:F5"].Value = new string[] { "Option1", "Option2", "Option3", "Option4", "Option5" };
workSheet.AddNamedRange("ValidationList", workSheet["F1:F5"]);

// Apply to data validation (conceptual example)
// The actual validation would reference "ValidationList"
// Create a named range for validation list
workSheet["F1:F5"].Value = new string[] { "Option1", "Option2", "Option3", "Option4", "Option5" };
workSheet.AddNamedRange("ValidationList", workSheet["F1:F5"]);

// Apply to data validation (conceptual example)
// The actual validation would reference "ValidationList"
' Create a named range for validation list
workSheet("F1:F5").Value = New String() {"Option1", "Option2", "Option3", "Option4", "Option5"}
workSheet.AddNamedRange("ValidationList", workSheet("F1:F5"))

' Apply to data validation (conceptual example)
' The actual validation would reference "ValidationList"
$vbLabelText   $csharpLabel

最佳實踐和性能提示

  1. 命名規範:使用描述性和一致性的名稱,以指示資料的用途(例如,Sales_Q1_2024 而不是 "Data1")
  2. 範圍管理:在活頁簿與工作表範圍間有意識地選擇,以避免衝突
  3. 文件:維護命名範圍及其用途的清單,特別是在複雜的活頁簿中
  4. 性能:命名範圍對性能的影響微乎其微,但避免建立數以千計的小型命名範圍
  5. 更新:當資料結構變更時,更新或移除相應的命名範圍以保持準確性

欲了解更多進階的 Excel 操作和性能優化,請查閱完整的 IronXL 文件,或查看特定功能,如排序 Excel 範圍處理 Excel 表格

常見問題

如何在C#中使用Excel建立命名範圍?

要在C#中使用IronXL在Excel中建立命名範圍,請使用工作表索引選擇目標範圍(例如,workSheet["A1:B2"]),然後調用SaveAsNamedRange方法並指定所需名稱。您也可以使用AddNamedRange方法,將名稱作為文字和範圍物件傳遞。

Excel命名範圍的命名規則是什麼?

使用IronXL建立命名範圍時,請遵循這些Excel命名慣例:名稱必須以字母或下劃線開頭,不能包含空格(請使用下劃線代替),不能與像'A1'這樣的單元格引用衝突,不區分大小寫。當您建立命名範圍時,IronXL會自動強制執行這些規則。

我可以從Excel工作簿中程式化地檢索所有命名範圍嗎?

可以,IronXL提供GetNamedRanges方法,該方法會以字串列表的形式返回工作表中的所有命名範圍。此功能在審計或記錄使用IronXL載入的現有工作簿中的命名範圍時特別有用。

命名範圍如何改進我在C#中的Excel公式?

使用IronXL時,命名範圍使Excel公式更具可讀性和可維護性。您可以在公式中使用像'SalesData'這樣的描述性名稱,而不是使用像'A1:B10'這樣的單元格引用,使您的C#程式碼更加清晰易懂。

是否能為不連續的單元格建立命名範圍?

可以,IronXL支持為不連續選擇和整個行或列建立命名範圍。該程式庫的全面工作表管理功能允許您定義超出簡單矩形選擇的複雜命名範圍。

在一行程式碼中新增命名範圍的最快方法是什麼?

使用IronXL,您可以使用一行程式碼建立命名範圍:new IronXL.WorkBook().DefaultWorkSheet["A1:B2"].SaveAsNamedRange("MyRange", true)。這展示了IronXL的Excel操作精簡API。

如何從Excel工作表中移除命名範圍?

IronXL提供RemoveNamedRange方法,讓您輕鬆從工作表中刪除命名範圍。這是該程式庫完整命名範圍管理功能的一部分,使您能夠程式化地新增、檢索和移除命名範圍。

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
運行一個範例 觀看您的資料成為試算表。