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

来源:https://www.cnblogs.com/Yesi/archive/2018/12/11/10102185.html
-Advertisement-
Play Games

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


創建命名區域是指給選定的某個單元格或多個單元格區域設置名稱,目的是方便我們在文件中的其他地方對該單元格區域進行引用能夠簡化公式引用或者方便數據管理。下麵記錄了具體的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

 

(本文完)

如需轉載,請註明出處!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 如下麵的例子: 在腳本中引入from future import division 將除數或者被除數轉換為浮點數 如下麵的例子: ...
  • LinFx 一個基於 .NET Core 2.0 開發的簡單易用的快速開發框架,遵循領域驅動設計(DDD)規範約束,提供實現事件驅動、事件回溯、響應式等特性的基礎設施。讓開發者享受到正真意義的面向對象設計模式來帶的美感。 LinFx.Extensions Caching、DapperExtensio ...
  • 最近用公司的筆記本電腦,裝win10發現太卡,無奈最終選擇安裝win7系統,本以為系統安裝成功了,接下來只要安裝下開發環境:vs2017 sqlserver等就好,結果在安裝vs2017的時候,一直出現閃退,耗費了大半天也沒成功,不過最終還是安裝成功了,所以,專門寫一篇文章記錄處理過程,用以方便遇到 ...
  • 我在百度上搜了一下.net core和efcore 入門案例。好多博客都是大概說了一下做法,對於小白而言還是一頭霧水,我今天就抽出一點時間,寫一個詳細的入門小案例,就一張表沒有什麼業務可言。主要是操作的步驟,當然這隻是讓小白入個門,以後到公司工作,每個項目經理搭的架構不完全一樣,但是我們懂了基本的, ...
  • 一、Lua文件載入 1).Resources載入xluaTest文件 2).通過loader載入 3).自定義Loader(相當於Resources載入和loader載入結合) 先自定義Loader,再載入 二、C#訪問Lua 1).獲取一個全局基本數據類型 2).訪問一個全局的table ①映射到 ...
  • 1 public class ExcelOperator 2 { 3 public static List<DataTable> Read(string fileName) 4 { 5 List<DataTable> tables = new List<DataTable>(); 6 if (!Fi ...
  • using System.Reflection; Type t = obj.GetType();//獲得該類的Type foreach (PropertyInfo pi in t.GetProperties()){ var name = pi.Name;//獲得屬性的名字,後面就可以根據名字判斷來進 ...
  • 在文章中有錯誤的地方,或是有建議或意見的地方,請大家多多指正,郵箱: [email protected] 一天張三,李四,王五,趙六去動物園,張三沒買票,李四製作了個假票,王五買了票,趙六要直接翻牆進動物園 到了門口,驗票的時候,張三沒有買票被拒絕進入動物園,李四因為買假票而被補,趙六被執勤人員 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...