如何在 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一行程式碼新增命名範圍

使用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


如何在工作表中新增命名區域?

若要新增命名範圍,請使用 AddNamedRange 方法,將命名範圍的名稱作為文字傳遞,並將範圍物件傳遞。 此方法是 IronXL 全面工作表管理功能的一部分。

: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");
$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();
$vbLabelText   $csharpLabel

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

使用 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}"];
$vbLabelText   $csharpLabel

跨多個工作表處理命名區域

命名區域可以具有工作簿層級或工作表層級的作用域。 工作簿層級名稱可以從任何工作表中訪問,而工作表層級名稱只能在其特定的工作表中存取。 在管理 Excel 文件中的多個工作表時,這種差異非常重要。

// 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
// 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
$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");
$vbLabelText   $csharpLabel

進階命名靶場場景

在公式中使用命名區域

當命名區域與 Excel 公式結合使用時,其優勢才能真正體現出來。 它們使公式更易讀、更易於維護。 有關全面的公式管理,請參閱C# 中的 Excel 公式指南。

// 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
workSheet.EvaluateAll();
// 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
workSheet.EvaluateAll();
$vbLabelText   $csharpLabel

動態命名範圍

雖然IronXL不直接支援 Excel 的動態命名區域(使用 OFFSET 或 INDEX 函數),但您可以根據資料變更以程式設計方式更新命名區域:

// 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}"]);
// 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}"]);
$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"
$vbLabelText   $csharpLabel

最佳實踐和績效技巧

1.命名約定:使用描述性、一致的名稱,以表示資料的用途(例如,Sales_Q1_2024 而非"Data1")。 2.範圍管理:要明確區分工作簿和工作表的範圍,以避免衝突。 3.文件:維護一份已命名區域及其用途的列表,尤其是在複雜的工作簿中。 4.性能:命名範圍對性能的影響極小,但應避免創建數千個微小的命名範圍。 5.更新:當資料結構改變時,更新或刪除對應的命名範圍以保持準確度。

若要了解更進階的 Excel 操作和效能最佳化,請瀏覽完整的IronXL文檔,或查看特定功能,例如對Excel 區域進行排序處理 Excel 表格

常見問題解答

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

若要在 Excel 中使用 C# 與 IronXl.Excel 建立命名範圍,請使用工作表索引器選擇您的目標範圍 (例如,workSheet["A1:B2"]),然後以您想要的名稱呼叫 SaveAsNamedRange 方法。您也可以使用 AddNamedRange 方法,傳入名稱為文字和範圍物件。

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

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

我可以用程式擷取 Excel 工作簿中所有已命名的範圍嗎?

是的,IronXL 提供了 GetNamedRanges 方法,可以將工作表中所有已命名的範圍以字串清單的形式返回。在審核或記錄載入 IronXL 的現有工作簿中的命名範圍時,此功能特別有用。

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

在使用 IronXl.Excel 時,命名範圍可使 Excel 公式更具可讀性和可維護性。您可以在公式中使用類似「SalesData」的描述性名稱,取代使用「A1:B10」這樣的單元格參照,讓您的 C# 程式碼更清晰易懂。

是否可以為非連續的儲存格建立命名範圍?

是的,IronXL 支援為非連續選項和整行或整列建立命名範圍。該函式庫的全面工作表管理功能可讓您定義複雜的命名範圍,而不只是簡單的矩形選取。

在一行代碼中添加命名範圍的最快方法是什麼?

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

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

IronXL 提供 RemoveNamedRange 方法,可輕鬆刪除工作表中的命名範圍。這是函式庫完整命名範圍管理功能的一部分,可讓您以程式化的方式新增、擷取和移除命名範圍。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/ready_to_started_202509.php
Line: 12
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 489
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/ready_to_started_202509.php
Line: 19
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 489
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

準備好開始了嗎?
Nuget 下載 1,890,100 | 版本: 2026.3 剛剛發布

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/still_scrolling_202512.php
Line: 17
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 71
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/still_scrolling_202512.php
Line: 24
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 71
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

Still Scrolling Icon

還在捲動嗎?

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