天天看點

C# 建立、更改Excel命名區域(NamedRange)

建立命名區域是指給標明的某個單元格或多個單元格區域設定名稱,目的是友善我們在檔案中的其他地方對該單元格區域進行引用能夠簡化公式引用或者友善資料管理。下面記錄了具體的C#示例代碼。這裡建立命名區域分為了2種情況,分别對應不同的添加方法以及命名區域的引用範圍,即:

1. 全局命名區域(方法:workbook.NameRanges.Add() )

2. 局部命名區域(方法:sheet.Names.Add () )

同時,對于Excel表格中已有的命名區域,可通過方法進行修改或者删除,包括

  • 更改區域名稱
  • 隐藏指定命名區域名稱
  • 删除指定命名區域

使用工具:Free Spire.XLS for .NET(免費版)

注:下載下傳Free Spire.XLS後解壓安裝,在編輯代碼時,注意在程式中添加引用Spire.Xls.dll(如下圖),dll檔案在安裝路徑下的Bin檔案夾中擷取。

C# 建立、更改Excel命名區域(NamedRange)

代碼示例

【示例1】建立Excel命名區域

步驟 1:加載文檔,擷取工作表

//建立Workbook類的執行個體,加載文檔
Workbook workbook = new Workbook();
workbook.LoadFromFile("test.xlsx");

//擷取第1張工作表
Worksheet sheet = workbook.Worksheets[0];      

步驟 2:建立命名區域

//定義第一個全局命名區域
INamedRange NamedRange1 = workbook.NameRanges.Add("第1批次入庫量");//此方法定義的命名區域,引用時可适用于整個工作簿
//INamedRange NamedRange1 = sheet.Names.Add("第1批次入庫量");//此方法定義的命名區域,引用時僅适用于命名區域所在工作表
NamedRange1.RefersToRange = sheet.Range["G3:G7"];

//定義第二個全局命名區域
INamedRange NamedRange2 = workbook.NameRanges.Add("第2批次入庫量");
//INamedRange NamedRange2 = sheet.Names.Add("第2批次入庫量");
NamedRange2.RefersToRange = sheet.Range["G8:G12"];      

步驟 3: 在公式中引用命名區域

//指定單元格寫入文本
sheet.Range["A14"].Text = "入庫量合計";

//在公式中引用命名區域
sheet.Range["B14"].Formula = "=SUM(第1批次入庫量,第2批次入庫量)";      

步驟 4:儲存文檔

workbook.SaveToFile("result.xlsx", ExcelVersion.Version2013);      

建立效果:

全部代碼:

C# 建立、更改Excel命名區域(NamedRange)
C# 建立、更改Excel命名區域(NamedRange)
using Spire.Xls;
using Spire.Xls.Core;

namespace CreateNamedRange_XLS
{
    class Program
    {
        static void Main(string[] args)
        {
            //建立Workbook執行個體
            Workbook workbook = new Workbook();
            //加載Excel檔案
            workbook.LoadFromFile("test.xlsx");

            //擷取第1張工作表
            Worksheet sheet = workbook.Worksheets[0];

            //定義第一個全局命名區域
            INamedRange NamedRange1 = workbook.NameRanges.Add("第1批次入庫量");//此方法定義的命名區域,引用時可适用于整個工作簿
            //INamedRange NamedRange1 = sheet.Names.Add("第1批次入庫量");//此方法定義的命名區域,引用時僅适用于命名區域所在工作表
            NamedRange1.RefersToRange = sheet.Range["G3:G7"];

            //定義第二個全局命名區域
            INamedRange NamedRange2 = workbook.NameRanges.Add("第2批次入庫量");
            //INamedRange NamedRange2 = sheet.Names.Add("第2批次入庫量");
            NamedRange2.RefersToRange = sheet.Range["G8:G12"];

            //指定單元格寫入文本
            sheet.Range["A14"].Text = "入庫量合計";

            //在公式中引用命名區域
            sheet.Range["B14"].Formula = "=SUM(第1批次入庫量,第2批次入庫量)";

            //儲存文檔
            workbook.SaveToFile("result.xlsx", ExcelVersion.Version2013);
            System.Diagnostics.Process.Start("result.xlsx");
        }
    }
}      

View Code

【示例2】更改Excel命名區域

//建立文檔,加載測試檔案
Workbook wb = new Workbook();
wb.LoadFromFile("sample.xlsx");

//擷取第一張工作表
Worksheet sheet = wb.Worksheets[0];      

步驟 2:修改命名區域名稱

//擷取表格中的指定命名區域
INamedRange namedRange = wb.NameRanges.GetByName("第1批次入庫量");//适用于全局命名區域(整個工作簿)
//INamedRange namedRange = sheet.Names.GetByName("第2批次入庫量");//适用于局部命名區域(指定工作表)

//修改指定命名區域的名稱
namedRange.Name = "newrange";
namedRange.RefersToRange = wb.Worksheets[0].Range["G3:G7"];
//namedRange.RefersToRange = sheet.Range["G3:G7"];      

步驟 3 :設定命名區域名稱隐藏/顯示

namedRange = wb.NameRanges.GetByName("第2批次入庫量");
namedRange.Visible = false;      

步驟 4 :删除命名區域

wb.NameRanges.Remove("RangeName");
//sheet.Names.Remove("RangeName");      

步驟 5:儲存文檔

wb.SaveToFile("newresult.xlsx", FileFormat.Version2010);      

測試文檔:

修改結果:

C# 建立、更改Excel命名區域(NamedRange)
C# 建立、更改Excel命名區域(NamedRange)
using Spire.Xls;
using Spire.Xls.Core;

namespace ModifyNameRange_XLS
{
    class Program
    {
        static void Main(string[] args)
        {
            //建立文檔,加載測試檔案
            Workbook wb = new Workbook();
            wb.LoadFromFile("sample.xlsx");

            //擷取第一張工作表
            Worksheet sheet = wb.Worksheets[0];

            //擷取表格中的指定命名區域
            INamedRange namedRange = wb.NameRanges.GetByName("第1批次入庫量");//适用于全局命名區域(整個工作簿)
            //INamedRange namedRange = sheet.Names.GetByName("第2批次入庫量");//适用于局部命名區域(指定工作表)

            //修改指定命名區域的名稱
            namedRange.Name = "newrange";
            namedRange.RefersToRange = wb.Worksheets[0].Range["G3:G7"];
            //namedRange.RefersToRange = sheet.Range["G3:G7"];

            //擷取指定命名區域,并設定區域名稱隐藏
            namedRange = wb.NameRanges.GetByName("第2批次入庫量");
            namedRange.Visible = false;

            //删除文檔中的指定命名區域的名稱
            wb.NameRanges.Remove("RangeName");
            //sheet.Names.Remove("RangeName");

            //儲存文檔
            wb.SaveToFile("newresult.xlsx", FileFormat.Version2010);
            System.Diagnostics.Process.Start("newresult.xlsx");
        }
    }
}      

(本文完)

如需轉載,請注明出處!

繼續閱讀