创建命名区域是指给选定的某个单元格或多个单元格区域设置名称,目的是方便我们在文件中的其他地方对该单元格区域进行引用能够简化公式引用或者方便数据管理。下面记录了具体的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[];

步骤 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[]; //定义第一个全局命名区域
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");
}
}
}

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

步骤 1:加载文档,获取工作表

//创建文档,加载测试文件
Workbook wb = new Workbook();
wb.LoadFromFile("sample.xlsx"); //获取第一张工作表
Worksheet sheet = wb.Worksheets[];

步骤 2:修改命名区域名称

//获取表格中的指定命名区域
INamedRange namedRange = wb.NameRanges.GetByName("第1批次入库量");//适用于全局命名区域(整个工作簿)
//INamedRange namedRange = sheet.Names.GetByName("第2批次入库量");//适用于局部命名区域(指定工作表) //修改指定命名区域的名称
namedRange.Name = "newrange";
namedRange.RefersToRange = wb.Worksheets[].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[]; //获取表格中的指定命名区域
INamedRange namedRange = wb.NameRanges.GetByName("第1批次入库量");//适用于全局命名区域(整个工作簿)
//INamedRange namedRange = sheet.Names.GetByName("第2批次入库量");//适用于局部命名区域(指定工作表) //修改指定命名区域的名称
namedRange.Name = "newrange";
namedRange.RefersToRange = wb.Worksheets[].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");
}
}
}

(本文完)

如需转载,请注明出处!

C# 创建、更改Excel命名区域(NamedRange)的更多相关文章

  1. Java 创建、编辑、删除Excel命名区域

    Excel命名区域,即对指定单元格区域进行命名,以便对单元格区域引用,如在公式运用中可以引用指定命名区域进行公式操作.在创建命名区域时,可针对整个工作簿来创建,即workbook.getNameRan ...

  2. Excel命名区域的创建、修改、删除、命名

    因工作需要,需要用到 Excel实现多级下拉列表,这是预备知识! 链接地址:http://wenku.baidu.com/link?url=vHkAo25IXo6mabms-Jv0m3T7BRfAMg ...

  3. Excel应该这么玩——4、命名区域:搞定下拉框

    前三篇都是讲的给Excel元素命名,本篇再介绍一种命名的使用方式:命名区域.区域是多个单元格的集合,可以是单行.单列或者类似表格的单元格矩阵,也可以是不连续的多个单元格,但很少用到.当然,一个单元格也 ...

  4. ( 转)Ubuntu下创建、重命名、删除文件及文件夹,强制清空回收站方法

    Ubuntu下创建.重命名.删除文件及文件夹,强制清空回收站方法 mkdir 目录名 ——创建一个目录 rmdir 空目录名 ——删除一个空目录 rm 文件名 文件名 ——删除一个文件或多个文件 rm ...

  5. Dynamics AX 2012 R2 无法创建类"Excel.Application"的COM对象

        Reinhard在做一个Excel导入项目时,发现X++代码一旦执行到Excel组件部分,就会报如下错误: 无法创建类"Excel.Application"的COM对象.请 ...

  6. (转载)ORA-14452:试图创建,更改或删除正在使用的临时表中的索引

    因为表kol_xx_fin050_temp 为临时表,而且有其他session正在使用. 处理步骤: 1.先从 dba_objects / user_objects中查询到该表的object_id: ...

  7. c#.net对excel的操作——创建一个excel报表两个sheet就是2个表分别添加内容

    添加引用:Microsoft.Office.Interop.Excel //创建excel对象,就是实例化一个excel对象            Application excel=new Appl ...

  8. ORA-14452: 试图创建, 更改或删除正在使用的临时表中的索引

    ORA-14452: 试图创建, 更改或删除正在使用的临时表中的索引       因为表KOL_XX_FIN050_TEMP 为临时表,而且有其他session正在使用. 处理步骤: 1.先从 dba ...

  9. vs2016 创建 vsto excel 文件项目的一个问题

    新工作需要些一个基于Excel开发一个工具,vs的 vsto 功能很好用,封装了基于开发office 开的一些工具.但是在实际使用时,创建项目总是报错,提示打开excel文件失败.项目是需要创建一个e ...

随机推荐

  1. koa+mysql+vue+socket.io全栈开发之数据访问篇

    后端搭起大体的框架后,接着涉及到的就是如何将数据持久化的问题,也就是对数据库进行 CURD 操作. 关于数据库方案, mongodb 和 mysql 都使用过,但我选用的是 mysql,原因: 目前为 ...

  2. r.js合并实践 --项目中用到require.js做生产时模块开发 r.js build.js配置详解

    本文所用源代码已上传,需要的朋友自行下载:点我下载 第一步: 全局安装  npm install -g requirejs 第二步: 1.以下例子主要实现功能, 1)引用jq库获取dom中元素文本, ...

  3. sun.misc.Unsafe 详解

    原文地址 译者:许巧辉 校对:梁海舰 Java是一门安全的编程语言,防止程序员犯很多愚蠢的错误,它们大部分是基于内存管理的.但是,有一种方式可以有意的执行一些不安全.容易犯错的操作,那就是使用Unsa ...

  4. 5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」

    希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注. Cookie-Based认证 认证流程 我们先看下传统Web端的认 ...

  5. 项目分层-----MVC

    MVC设计模式:modle层,view层,controller层 以前学习的servlet其实就是一个java类,或者说经过规范的java类,实际进行跳转时,还是要在web.xml文件中配置才能正常跳 ...

  6. QT读取xml配置文件

    //获取字符串字段 QString ConfigHelper::GetStringConfigValue(QString str) { if(str == "InitDeviceNo&quo ...

  7. 【安富莱TCPnet网络教程】HTTP通信实例

    第41章      HTTP超文本传输协议基础知识 本章节为大家讲解HTTP(HyperText Transfer Protocol,超文本传输协议),从本章节开始,正式进入嵌入式Web的设计和学习. ...

  8. IM开发者的零基础通信技术入门(二):通信交换技术的百年发展史(下)

    1.系列文章引言 1.1 适合谁来阅读? 本系列文章尽量使用最浅显易懂的文字.图片来组织内容,力求通信技术零基础的人群也能看懂.但个人建议,至少稍微了解过网络通信方面的知识后再看,会更有收获.如果您大 ...

  9. js原生数组去重

    // ['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b']; 取消重复的元素 数组去重 (for循环) // 把旧数组里面 不重复的元素选取出来放到新数组中 重复 ...

  10. AI - TensorFlow - 分类与回归(Classification vs Regression)

    分类与回归 分类(Classification)与回归(Regression)的区别在于输出变量的类型.通俗理解,定量输出称为回归,或者说是连续变量预测:定性输出称为分类,或者说是离散变量预测. 回归 ...