C#开发Excel加载项简单方法

公司要求对一类xls文件中的几列数据,根据不同情况,做不同替换,做一个自动的小程序,起初采用宏,使用太麻烦,干脆做成VSTO;
查了几篇文章,套路各自不同,觉得绕的弯子太大;写一个开发简单应用的过程。

1.新建工程

新建->项目->Visual C#->Office->20XX->20XX Excel 外接程序->确定
系统会自动创建一个类,ThisAddIn.cs
这个在必要的时候可以添加ThisAddIn_Startup、ThisAddIn_Shutdown这两个事件的代码;
我们直接跳过;

2.添加加载项的菜单

加载项肯定是要有一个菜单的,有按钮、图片、图标,先做一个:
在解决方案资源管理其中,选中工程名称,点右键,
添加->类->功能区(可视化设计器)->添加
则工程中增加了一个Ribbon菜单的类;
这里就不用赘述了,直接显示Ribbon的设计窗口,编辑你想要的菜单即可;

3.引用的添加

点开Ribbon的代码编辑
在引用中添加:

using Microsoft.Office.Tools.Ribbon;
using Excel = Microsoft.Office.Interop.Excel;
using Office = Microsoft.Office.Core;
using Microsoft.Office.Tools.Excel;
using System.Windows.Forms;//为了显示鼠标形状、对话框函数

需要定义一下命名空间,与ThisAddIn.cs中的命名空间保持一致;

4.Excel对象的获得

我们想操作Excel表格,首先相关的对象做简单的理解
Application看作一个*.xls文件;
Worksheet看作Excel文件中的sheet;
Cells看作sheet中的一个格子,是Worksheet子对象;
Range看作由若干个格子组成的一个区域,可以是1个也可以是多个格子;
Rows、Columns这些对象以后再说,掌握了Cells,用笨办法可以进行编程,不掌握也罢。
那么好办了:
创建全局变量对象ExcelApp、ws

public Excel.Application ExcelApp;
public Excel.Worksheet  ws;

在Ribbon菜单的_Load()事件中增加,获得当前xls文档对象实例;

ExcelApp = Globals.ThisAddIn.Application;

在Ribbon菜单的各个按钮事件中,添加代码,获得当前活动页对象实例

Excel.Worksheet ws = ExcelApp.ActiveSheet;

使用Range获取,某个格子对象

Excel.Range rrng = ws.Cells[1, 2];

5.对象的操作

Range有value属性,可以读写,数据类型为string;
为什么不用Cells的属性呢?有时候可以,有时候不行,没有做更多研究;
我们需要对sheet中的有效数据进行处理,那么有效数据的行数为:ws.UsedRange.Rows.Count;
每一个按钮事件,建议增加一个对sheet的识别,如果不是要操作的xls模板,可以有提示对话框;也可以在Ribbon的load事件中,增加一个识别代码,让按钮生效或失效;

6.发布及设置

工程编译后,可以直接生成VSTO安装文件;在文件夹中可以直接找到,点击就可以安装;
Office有相关的安全机制,因此在安装VSTO前,在Excel中做如下操作:
选项->信任中心->信任中心设置->加载项,将“要求受信任的发布者签署应用程序加载项”前的复选框取消勾选;
在安装以后,如果需要更新加载项,应该在Office加载项中卸载,注意是“卸载”不是取消加载项;卸载后,重新安装;

不足之处,请指正;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值