1. 程式人生 > >C# 創建、更改Excel命名區域(NamedRange)

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

div esp 創建 一個 www 適用於 test mes https

創建命名區域是指給選定的某個單元格或多個單元格區域設置名稱,目的是方便我們在文件中的其他地方對該單元格區域進行引用能夠簡化公式引用或者方便數據管理。下面記錄了具體的C#示例代碼。這裏創建命名區域分為了2種情況,分別對應不同的添加方法以及命名區域的引用範圍,即:

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

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

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

  • 更改區域名稱
  • 隱藏指定命名區域名稱
  • 刪除指定命名區域

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

註:下載Free Spire.XLS後解壓安裝,在編輯代碼時,註意在程序中添加引用Spire.Xls.dll(如下圖),dll文件在安裝路徑下的Bin文件夾中獲取。

技術分享圖片

代碼示例

【示例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);

創建效果:

技術分享圖片

全部代碼:

技術分享圖片
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命名區域

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

//創建文檔,加載測試文件
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);

測試文檔:

技術分享圖片

修改結果:

技術分享圖片

全部代碼:

技術分享圖片
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");
        }
    }
}
View Code

(本文完)

如需轉載,請註明出處!

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