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文件夹中获取。
代码示例
【示例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)的更多相关文章
- Java 创建、编辑、删除Excel命名区域
Excel命名区域,即对指定单元格区域进行命名,以便对单元格区域引用,如在公式运用中可以引用指定命名区域进行公式操作.在创建命名区域时,可针对整个工作簿来创建,即workbook.getNameRan ...
- Excel命名区域的创建、修改、删除、命名
因工作需要,需要用到 Excel实现多级下拉列表,这是预备知识! 链接地址:http://wenku.baidu.com/link?url=vHkAo25IXo6mabms-Jv0m3T7BRfAMg ...
- Excel应该这么玩——4、命名区域:搞定下拉框
前三篇都是讲的给Excel元素命名,本篇再介绍一种命名的使用方式:命名区域.区域是多个单元格的集合,可以是单行.单列或者类似表格的单元格矩阵,也可以是不连续的多个单元格,但很少用到.当然,一个单元格也 ...
- ( 转)Ubuntu下创建、重命名、删除文件及文件夹,强制清空回收站方法
Ubuntu下创建.重命名.删除文件及文件夹,强制清空回收站方法 mkdir 目录名 ——创建一个目录 rmdir 空目录名 ——删除一个空目录 rm 文件名 文件名 ——删除一个文件或多个文件 rm ...
- Dynamics AX 2012 R2 无法创建类"Excel.Application"的COM对象
Reinhard在做一个Excel导入项目时,发现X++代码一旦执行到Excel组件部分,就会报如下错误: 无法创建类"Excel.Application"的COM对象.请 ...
- (转载)ORA-14452:试图创建,更改或删除正在使用的临时表中的索引
因为表kol_xx_fin050_temp 为临时表,而且有其他session正在使用. 处理步骤: 1.先从 dba_objects / user_objects中查询到该表的object_id: ...
- c#.net对excel的操作——创建一个excel报表两个sheet就是2个表分别添加内容
添加引用:Microsoft.Office.Interop.Excel //创建excel对象,就是实例化一个excel对象 Application excel=new Appl ...
- ORA-14452: 试图创建, 更改或删除正在使用的临时表中的索引
ORA-14452: 试图创建, 更改或删除正在使用的临时表中的索引 因为表KOL_XX_FIN050_TEMP 为临时表,而且有其他session正在使用. 处理步骤: 1.先从 dba ...
- vs2016 创建 vsto excel 文件项目的一个问题
新工作需要些一个基于Excel开发一个工具,vs的 vsto 功能很好用,封装了基于开发office 开的一些工具.但是在实际使用时,创建项目总是报错,提示打开excel文件失败.项目是需要创建一个e ...
随机推荐
- SSRS报表服务随笔(rdl报表服务)-报表数据:使用第三方控件生成条形码
因为工作需要,需要将订单号显示成条形码,比如数据库存储的20190106A,我需要把这个转换为Code128来显示出来 在国内我没有找到这方面的教程,最后还是一个人自己摸索出来的 在这里我是使用的是B ...
- linux安装nvm node版本管理器 nvm常用命令 部署node服务器环境
1,nvm git地址点击打开链接,安装命令 curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh ...
- 有趣的8个IT冷知识
阅读本文大概需要 2.8 分钟. 想要成为一名成功的程序员,我们除了了解不同编程语言的设计思路,也应当了解编程的发展历史,从而判断未来的编程技术将走向何方.接下就为大家普及下计算机发展历程中的8个冷门 ...
- asp.net core系列 47 Identity 自定义用户数据
一.概述 接着上篇的WebAppIdentityDemo项目,将自定义用户数据添加到Identity DB,自定义扩展的用户数据类应继承IdentityUser类, 文件名为Areas / Ident ...
- Unity 用ml-agents机器学习造个游戏AI吧(1)(Windows环境配置)
前言:以前觉得机器学习要应用于游戏AI,还远得很. 最近看到一些资料后,突发兴致试着玩了玩Unity机器学习,才发觉机器学习占领游戏AI的可能性和趋势. Unity训练可爱柯基犬Puppo 机器学习训 ...
- Angular(03)-- lint风格规范和WebStorm小技巧
在开始讲 Angular 各个核心知识点之前,想先来讲讲开发工具 WebStorm 的一些配置以及相应配置文件如 tslint.json 的配置. 因为我个人比较注重代码规范.代码风格,而对于这些规范 ...
- 好看又能打的CRM系统大比拼:Salesforce, SugarCRM, Odoo等
介绍 今天的CRM市场提供了大量的解决方案和软件替代品.有些适合大型企业(通常需要内部托管),而其他企业则更多地应用于SME的需求(通常使用云托管解决方案). 在CRM解决方案方面,提供商必须调整其产 ...
- ArcMap插件开发初识:Add In
之前一直在做ArcEngine的相关开发,做的winform相关,新换了工作,又开始新的学习旅程! Add In 这个东西很早就知道有,但是一直没有用过,因为之前的公司有自己框架,接口,虽然我也是做插 ...
- ionic3 生命周期
ionic3 总共有8个钩子函数,分别是:onPageLoaded,onPageWillEnter,onPageDidEnter,onPageWillLeave,onPageDidLeave,onPa ...
- Redis入门教程(二)
推荐阅读: Redis入门教程(一)https://www.cnblogs.com/jichi/p/10285346.html 5. Redis 的数据结构 5.1 Redis 数据结构介绍 redi ...