如何在 C# 中使用 IronXL 新增命名範圍
命名範圍是一個由唯一名稱識別的指定儲存格範圍。 與其用儲存格地址(如 A1:B10)來引用範圍,您可以為範圍指定名稱,使其在公式和函式中更易於引用和理解。 例如,如果您將範圍命名為 "SalesData",您可以在公式中使用 SUM(SalesData) 來引用它,而不是直接指定儲存格範圍。
在處理 C# 中的 Excel 公式 時,命名範圍特別有用,因為它們使您的程式碼更易讀且更易維護。 與 IronXL 的強大範圍選擇功能相結合,命名範圍成為高效電子表格管理的基本工具。
快速入門:使用 IronXL 在一行中新增命名範圍
using IronXL 的單個方法調用來定義命名範圍。 選擇您的範圍並應用 SaveAsNamedRange 方法。
最小化工作流程(5步)
- IronXL.Excel
- 下載 C# 程式庫以新增命名範圍
- 使用 workSheet["A1:A5"] 選擇目標範圍
- 利用
AddNamedRange方法來新增命名範圍 - 以多種方式檢索命名範圍
- 使用
RemoveNamedRange方法輕鬆移除命名範圍
如何將命名範圍新增到我的工作表中?
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")
建立命名範圍時,遵循 Excel 的命名規範非常重要:
- 名稱必須以字母或下劃線開頭
- 名稱不能包含空格(請使用下劃線)
- 名稱不能與儲存格引用衝突(如 "A1" 或 "R1C1")
- 名稱不區分大小寫,但保持一致的大小寫可以提高可讀性
命名範圍也可以用於非連續選擇或整行/整列。 對於更複雜的範圍操作,請查看結合多個 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()
如何按名稱找到特定的命名範圍?
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}")
跨多個工作表使用命名範圍
命名範圍可以具有活頁簿級別或工作表級別的範圍。 活頁簿級別的名稱可以從任何工作表中存取,而工作表級別的名稱只能在其特定工作表內存取。 此區別在管理多個工作表時非常重要。
: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
如何從工作表中移除命名範圍?
要移除命名範圍,使用 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")
進階命名範圍場景
將命名範圍與公式一起使用
命名範圍在與 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()
動態命名範圍
雖然 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}"))
用於資料驗證的命名範圍
命名範圍非常適合建立資料驗證列表和約束。 與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"
最佳實踐和性能提示
- 命名規範:使用描述性和一致性的名稱,以指示資料的用途(例如,
Sales_Q1_2024而不是 "Data1") - 範圍管理:在活頁簿與工作表範圍間有意識地選擇,以避免衝突
- 文件:維護命名範圍及其用途的清單,特別是在複雜的活頁簿中
- 性能:命名範圍對性能的影響微乎其微,但避免建立數以千計的小型命名範圍
- 更新:當資料結構變更時,更新或移除相應的命名範圍以保持準確性
欲了解更多進階的 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方法,讓您輕鬆從工作表中刪除命名範圍。這是該程式庫完整命名範圍管理功能的一部分,使您能夠程式化地新增、檢索和移除命名範圍。

