VSTO(C#)Excel开发起步
初级代码游戏的专栏介绍与文章目录-CSDN博客
我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。
这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。
源码指引:github源码指引_初级代码游戏的博客-CSDN博客
VSTO是Office VBS开发的替代,虽然VBS仍然可用,但是必须使用专门的扩展名xlsm,而且,vbs输入“.”没有自动提示,这是很不爽的,所以如果不是VBS高手没必要死守VBS,直接用VSTO就可以了。
我琢磨VSTO的动机是写一个能自动把表格调整到一张纸的功能,Excel自身的功能只能按锁定纵横比缩放,不能调整纵横比,打印东西觉得很不爽。
当然今天我们只是开始。
目录
一、安装Visual Studio 的Office开发工作负荷
二、创建新项目
三、添加功能区并实现功能代码
四、运行效果
五、卸载扩展项
六、Excel管理加载项
一、安装Visual Studio 的Office开发工作负荷
使用VSTO首先要安装Visual Studio 的“Office/SharePoint开发”:
二、创建新项目
按照默认设置创建即可。编译一下应该是可以编译的,点运行会打开一个Excel程序。当然现在没什么可看的。
三、添加功能区并实现功能代码
我们的代码要做点什么最好从按钮入手,这样最容易调试,为此要先加一个功能区。
在项目上右键,“添加”-“新建项”:
注意别选成“功能区(XML)”了,这个只能用XML编辑器打开,而“功能区(可视化设计器)”才可以用设计器打开。文件名默认的就好,不用改。
然后双击打开新添加的Ribbon1.cs,会打开设计器,同时会打开工具箱,工具箱里面有“Office功能区控件” ,拖一个按钮到设计器里面:
拖过来的按钮默认名字叫“button1”,没有边框,不过不重要啦,我们直接在按钮上双击,VS会自动生成按钮处理程序的框架:
里面的两行代码是我写的,内容是这样:
using System.Windows.Forms;
Microsoft.Office.Interop.Excel.Range currentCell = Globals.ThisAddIn.Application.ActiveCell;
MessageBox.Show(currentCell.Text);
注意要加那个using才能使用MessageBox。
这两行代码的作用是获取当前的活动单元格,把里面的文本显示出来。
编译运行应该没问题。然后我们来看效果。
四、运行效果
编译运行,会打开Excel,启动时选择空白工作簿:
随便找个格子输点东西,然后点开功能区的“加载项”:
我们看到了我们添加的功能区,点一下按钮“button1”:
注意,如果你刚输入内容,没有点过别的格子,新的内容其实还没有进到里面呢,只会显示一个空消息框,点一下别的格子,再点回这个单元格,再去功能区点击按钮就会得到内容了。
关闭时无需保存文档,因为没什么实际内容。
五、卸载扩展项
前面我们是从VS启动的,Excel里面有效果是可以理解的,如果不从VS启动应该就没有了吧?
不是的,编译的时候就把相关信息写到注册表了,所以不用VS直接打开Excel加载项仍然是存在的。
为了清理这些信息,需要在VS执行“清理解决方案”,清理之后会发现Excel里面连“加载项”这个功能区都没有了(如果没有别的加载项的话)。
六、Excel管理加载项
我们编译程序就直接把加载项塞给了Excel,那影不影响别的事啊?Excel里面是可以选择启用哪些加载项的。
打开Excel的“文件”-“选项”:
“自定义功能区”里面“主选项卡”的“开发工具”默认是没有勾选的,勾选上。“加载项”默认应该就是勾选的。
然后在功能区“开发工具”上的“加载项”组点击“COM加载项”:
箭头指向的就是我们今天写的加载项。
(这里是文档结束)