博客
关于我
C# 创建、更改Excel命名区域(NamedRange)
阅读量:402 次
发布时间:2019-03-06

本文共 4295 字,大约阅读时间需要 14 分钟。

创建命名区域是指给选定的某个单元格或多个单元格区域设置名称,目的是方便我们在文件中的其他地方对该单元格区域进行引用能够简化公式引用或者方便数据管理。下面记录了具体的C#示例代码。这里创建命名区域分为了2种情况,分别对应不同的添加方法以及命名区域的引用范围,即:

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

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

同时,对于Excel表格中已有的命名区域,可通过方法进行修改或者删除,包括

  • 更改区域名称
  • 隐藏指定命名区域名称
  • 删除指定命名区域

使用工具:(免费版)

注:下载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

 

(本文完)

如需转载,请注明出处!

你可能感兴趣的文章
sctf_2019_easy_heap
查看>>
PyQt5之音乐播放器
查看>>
Redis进阶实践之十八 使用管道模式提高Redis查询的速度
查看>>
SQL注入
查看>>
MPI Maelstrom POJ - 1502 ⭐⭐ 【Dijkstra裸题】
查看>>
Problem 330A - Cakeminator (思维)
查看>>
LeetCode75 颜色分类 (三路快排C++实现与应用)
查看>>
C语言+easyX图形库的推箱子实现
查看>>
调试vs2019代码的流程
查看>>
bcolz的新操作
查看>>
delete对象时会自动调用类的析构函数
查看>>
POD类型
查看>>
const与常量,傻傻分不清楚~
查看>>
Head First设计模式——迭代器模式
查看>>
MongoDB版本及存储引擎区别
查看>>
shell echo单行和多行文字定向写入到文件中
查看>>
cmp命令
查看>>
Linux 磁盘管理(df fu fdisk mkfs mount)
查看>>
jQuery的事件绑定与触发 - 学习笔记
查看>>
Linux上TCP的几个内核参数调优
查看>>