c# 创建Excel com加载项Ribbon动态加载工作簿和工作表
使用 VSTO 创建外接程序,Gallery控件动态加载工作簿名称

代码如下:
加载工作簿名称:
private void Gallery1_ItemsLoading(object sender, RibbonControlEventArgs e)
{
app = Globals.ThisAddIn.Application;
gallery1.Items.Clear();
int n = ;
foreach (excel.Workbook workbook in app.Workbooks)
{
//RibbonGallery gallery = this.Factory.CreateRibbonGallery();
RibbonDropDownItem downItem = this.Factory.CreateRibbonDropDownItem();
downItem.Tag = workbook.Name + n.ToString();
gallery1.Items.Add(downItem);
downItem.Label = workbook.Name;
downItem.Image = Properties.Resources.Excel_32px_1185985_easyicon_net;
n++;
}
}
选择子项目激活工作簿:
private void Gallery1_Click(object sender, RibbonControlEventArgs e)
{ string tg = gallery1.SelectedItem.Label;
//MessageBox.Show(tg);
app = Globals.ThisAddIn.Application;
excel.Workbook workbook = app.Workbooks[tg];
workbook.Activate();
}
使用 VSTO 创建外接程序,dropDown控件动态加载工作表名称

代码如下:
加载工作表名称:
private void DropDown1_ItemsLoading(object sender, RibbonControlEventArgs e)
{
try
{ app = Globals.ThisAddIn.Application;
int n = ;
dropDown1.Items.Clear();
foreach (excel.Worksheet worksheet in app.Worksheets)
{
RibbonDropDownItem downItem = this.Factory.CreateRibbonDropDownItem();
downItem.Tag = worksheet.Name + n.ToString();
dropDown1.Items.Add(downItem);
downItem.Label = worksheet.Name;
downItem.Image = Properties.Resources.office_excel_24px_1116424_easyicon_net;
n++;
}
if (app.ActiveWorkbook.Path != "")
{
RibbonDropDownItem downItem1 = this.Factory.CreateRibbonDropDownItem();
downItem1.Label = "打开工作簿所在文件夹";
dropDown1.Items.Add(downItem1);
downItem1.Image = Properties.Resources.folder_32px_1229424_easyicon_net;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
选择子项目激活工作表:
private void DropDown1_SelectionChanged(object sender, RibbonControlEventArgs e)
{
try
{
string tg = dropDown1.SelectedItem.Label;
//MessageBox.Show(tg);
app = Globals.ThisAddIn.Application;
if (tg == "打开工作簿所在文件夹")
{
string FilePath = app.ActiveWorkbook.Path;
string FileName = app.ActiveWorkbook.Name;
//System.Diagnostics.Process.Start(FilePath);
System.Diagnostics.Process.Start("Explorer.exe", "/select," + FilePath + "\\" + FileName);
}
else
{
excel.Worksheet worksheet = app.ActiveWorkbook.Worksheets[tg];
worksheet.Protect(DrawingObjects: MsoTriState.msoTrue, Contents: MsoTriState.msoTrue, Scenarios: MsoTriState.msoTrue, AllowFiltering: MsoTriState.msoTrue, AllowUsingPivotTables: MsoTriState.msoTrue);
worksheet.Protect(DrawingObjects: MsoTriState.msoTrue, Contents: MsoTriState.msoTrue, Scenarios: MsoTriState.msoTrue, AllowFiltering: MsoTriState.msoTrue, AllowUsingPivotTables: MsoTriState.msoTrue);
worksheet.Protect(DrawingObjects: MsoTriState.msoTrue, Contents: MsoTriState.msoTrue, Scenarios: MsoTriState.msoTrue, AllowFiltering: MsoTriState.msoTrue, AllowUsingPivotTables: MsoTriState.msoTrue);
worksheet.Protect(DrawingObjects: MsoTriState.msoTrue, Contents: MsoTriState.msoTrue, Scenarios: MsoTriState.msoTrue, AllowFiltering: MsoTriState.msoTrue, AllowUsingPivotTables: MsoTriState.msoTrue);
worksheet.Unprotect();
worksheet.Visible = excel.XlSheetVisibility.xlSheetVisible;
worksheet.Activate();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
c# 创建Excel com加载项Ribbon动态加载工作簿和工作表的更多相关文章
- Delphi静态加载DLL和动态加载DLL示例
下面以Delphi调用触摸屏动态库xtkutility.dll为例子,说明如何静态加载DLL和动态加载DLL. 直接上代码. 1.静态加载示例 unit Unit1; interface uses W ...
- Excel催化剂开源第7波-VSTO开发中Ribbon动态加载菜单
在VS开发环境中,特别是VSTO的开发,微软已经现成地给开发者准备了设计器模式的功能区开发,相对传统的VBA.ExcelDna和其他方式的COM加载项开发来说,不需要手写xml功能区,直接类似拖拉窗体 ...
- vc静态加载dll和动态加载dll
如果你有a.dll和a.lib,两个文件都有的话可以用静态加载的方式: message函数的声明你应该知道吧,把它的声明和下面的语句写到一个头文件中 #pragma comment(lib, &quo ...
- Vue加载组件、动态加载组件的几种方式
https://cn.vuejs.org/v2/guide/components.html https://cn.vuejs.org/v2/guide/components-dynamic-async ...
- [办公自动化]excel工作簿内的表无法删除,单击右键无删除键
今天同事问,我自己的工作簿,没有设置保护,但是就是无法删除其中的工作表. 后来发现,她的excel工作簿打开的文件名后面显示[共享]. 原因找到了. 取消共享就可以了.
- Excel 工作簿、工作表与单元格
工作簿 工作簿是指在 Excel 中用来存储并处理数据的文件,其扩展名是.xlsx.工作簿是由工作表组成的,每一个工作簿都可以包含一个或多个工作表,默认为 3 个工作表.Excel 2007 之前的版 ...
- 【C#】Excel导出合并行和列并动态加载行与列
简单的Excel导出比较好做,只要设置表头,循环在表格中赋值添加数据即可,但是如果表头是不固定的,并且个数是不确定的,这就需要根据查询出数据的特点来添加导出了. 导出效果图: 如上图所示,商品的个数是 ...
- android左右滑动加载分页以及动态加载数据
android UI 往右滑动,滑动到最后一页就自动加载数据并显示 如图: package cn.anycall.ju; import java.util.ArrayList; import java ...
- excel破解工作簿与工作表保护
1.工作簿保护 1.1.使用压缩文件打开文件
随机推荐
- Linux shell变量详解
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个 ...
- centos7利用acme.sh获取Let's Encrypt的永久免费ssl证书并配置网站域名https访问
acme.sh介绍:https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E github:https://github.com/Neil ...
- Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition (ST-GCN)
Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition 摘要 动态人体骨架模型带有进行动 ...
- Fluter基础巩固之Dart语言详解<二>
继续学习枯燥的Dart语言语法,目前的耐得住寂寞是为了将来学得“爽”做准备的!!! 异常: Dart 提供了 Exception 和 Error 类型, 以及一些子类型.还可以定义自己的异常类型.但是 ...
- 微信2.1 for Windows发布 微信群可多人语音或视频通话
5月31日,windows电脑版微信发布更新,微信2.1 for Windows带来最主要的功能是微信群可以多人语音或视频通话了,建个家庭群组,常年在外工作的家人也可以每天见面了,多亲切! 除了可以建 ...
- yandexbot ip列表整理做俄罗斯市场的站长可以关注一下
这段时间ytkah在负责一个客户的网站,主要做俄罗斯市场,当然是要研究Yandex了,首先是要知道yandexbot的ip有哪些,本文通过分析这个站从2018.12.02到2019.05.21这段时间 ...
- 补充:垃圾回收机制、线程池和ORM缺点
补充:垃圾回收机制.线程池和ORM缺点 垃圾回收机制不仅有引用计数,还有标记清除和分代回收 引用计数就是内存地址的门牌号,为0时就会回收掉,但是会出现循环引用问题,这种情况下会导致内存泄漏(即不会被用 ...
- mysql 之编码配置、引擎介绍、字段操作、数据类型及约束条件
数据库的配置 # 通过配置文件统一配置的目的: 统一管理 服务端(mysqld) 客户端(client) 配置了mysqld(服务端)的编码为utf8, 那么再创建的数据库,默认编码都采用utf8. ...
- hadoop java.nio.channels.ClosedChannelException
今天在跑一个任务的时候,报错java.nio.channels.ClosedChannelException. INFO mapreduce.Job: Task Id : attempt_152101 ...
- BST | 1043 BST树与镜像BST树的判断
较为简单.小于大于的都走一遍就可以AC了 #include <stdio.h> #include <memory.h> #include <math.h> #inc ...