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[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");
        }
    }
}

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

(本文完)

如需转载,请注明出处!

原文地址:https://www.cnblogs.com/Yesi/p/10102185.html

时间: 2024-10-31 18:19:19

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

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

前三篇都是讲的给Excel元素命名,本篇再介绍一种命名的使用方式:命名区域.区域是多个单元格的集合,可以是单行.单列或者类似表格的单元格矩阵,也可以是不连续的多个单元格,但很少用到.当然,一个单元格也可以是一个区域,命名单元格算是命名区域的特例.创建单元格的方法和创建命名单元格一样,选择多个单元格之后,在名称框输入名称即可. 还是通过例子来讲解.比如公司行政部每个月要统计各个部门对文具的需求,一般会制作如下的表格: 1.设置下拉列表 (知道如何使用下拉列表的童鞋可以不看本节.) 由于部门和文具不

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

Ubuntu下创建.重命名.删除文件及文件夹,强制清空回收站方法 mkdir 目录名 ——创建一个目录 rmdir 空目录名 ——删除一个空目录 rm 文件名 文件名 ——删除一个文件或多个文件 rm -rf 非空目录名 ——删除一个非空目录下的一切 touch 文件名 ——创建一个空文件 重命名文件(夹) / 移动文件(夹)到指定文件夹echWeb-技术社区5].O"?8H.I执行格式: mv source destination 举例: mv file1 file2 表示将文件 file1,

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

添加引用:Microsoft.Office.Interop.Excel //创建excel对象,就是实例化一个excel对象            Application excel=new Application();            //设置工作表的个数            excel.SheetsInNewWorkbook=2;            //创建Wprkbook            excel.Workbooks.Add();            //取出第一个工

使用for循环创建在指定目录下批量创建文件并重命名所有文件

要求1: 使用for循环在/root/scripts/practice/q1/oldboy 目录下创建十个文件.名称依次为: oldboy-1, oldboy-2, ..... oldboy-10. 脚本实现: #!/bin/bash #Question1 shopt -s expand_aliases alias ll="ls -l" cd /root/scripts/practice/q1 #首先判断目录是否存在,不存在则创建目录 if [ ! -e oldboy ] then  

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

    Reinhard在做一个Excel导入项目时,发现X++代码一旦执行到Excel组件部分,就会报如下错误: 无法创建类"Excel.Application"的COM对象.请确保在计算机""上已正确注册该对象.     根据错误提示,我们先去组件服务中,查找名为Microsoft Excel Application的COM组件.     Reinhard并没有在COM组件列表中,找到该COM组件.我们知道,Microsoft Excel Application

java poi 创建新 excel写入的时候报错

1 2 3 4 5 6 7 8 9 10 11 12 13 14 String filePath ="FILES\\" +filename<span></span>+ ".xls";                File file = new File(filePath);                FileOutputStream out = new FileOutputStream(filePath);               

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

新工作需要些一个基于Excel开发一个工具,vs的 vsto 功能很好用,封装了基于开发office 开的一些工具.但是在实际使用时,创建项目总是报错,提示打开excel文件失败.项目是需要创建一个excel文件的.用眼观察,在文件管理器中,发现,文件是创建了,所有的项目文件也没问题,但是出错后,瞬间都给删除了,百度也查不到原因,郁闷了2天. 重新安装了 vsto 组件也不行. 闲来无事,因为装的vs 2016 是英文版的额,就像下载个中文包,装上.装上后,vs ide 没有变成中文IDE,在创

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

因为表kol_xx_fin050_temp 为临时表,而且有其他session正在使用. 处理步骤: 1.先从 dba_objects / user_objects中查询到该表的object_id: select object_id from dba_objects where object_name=upper('kol_xx_fin050_temp'); 2.根据查到的object_id知道使用该表的session: select * from v$lock where id1=&objec

Excel打印区域设置

excel打印区域设置 在打印excel的时候,经常需要来设定打印区域,才能更好的打印我们所要的东西,那怎么设置了,这里做个记录,以备使用查看 1.首先选中你要打印的区域,拖动鼠标框选就可以.如图 选中之后,点击“页面布局 —> 打印区域小箭头—>设置打印区域”.这就会设置你需要打印的区域了. 但是默认它会100%显示,有可能你的内容多而分成了几页,一些内容给分割开了,就不连续了,所以还需要设置自己的每页的打印区域 2.设置分页预览 如图,点击“视图 -à分页预览”,被分成了N页(与表格内容有