• [VSTO系列]一、VSTO For Excel Getting Start!


    • 我们的目标:

    在这次的系列文章中,我们通过一些小例子,来循序渐进的学习VSTO for excel这个已经出现很久的技术,在平常的使用时,我很少发现比较全面或者具体的文章作介绍,当然,除了MSDN。

    在我的博客开始这个系列,一为了巩固自己的相关技术知识,二也是为了和大家一起交流分享自己的技术心得和体会,希望能够获得更多宝贵的经验!

    这个系列第一期大致有如下文章:

    1. Getting Start(Add-In级别)
    2. 简单的UI设计(Robbin)
    3. 批量操作(附带一个qq联系人导出例子,Add-In级别)J
    4. 丰富的自定义UI交互(Add-In级别)
    5. 部署Add-In组件到客户端

    第二期将根据第一期的情况做灵活修改和调整,欢迎大家拍砖!

    • 什么是VSTO:

     是啊,什么是VSTO呢,其实很多朋友包括MSDN都给出了很好的定义,在此我就不再罗嗦,请大家通过如下网址进行查阅吧:

    引用:http://blog.csdn.net/v_jzho/archive/2007/09/29/1806904.aspx

    引用(官方对比):http://msdn.microsoft.com/zh-cn/library/zcfbd2sk(v=VS.80).aspx

      

    • Excel对象模型:

    在了解一个开发对象前,了解这个对象的模型是至关重要的,所以,再次还是照例,从MSDN搬来了对象模型介绍,全部是中文的,相信大家能够看懂。也请大家耐心的学习,毕竟这是日后很重要的一点!

    引用:http://msdn.microsoft.com/zh-cn/library/wss56bz7(VS.80).aspx

    • 开发环境:
    • 

    既然做开发嘛,开发环境当然是要搭建的了,下面是摘抄自MSDN的一段介绍。在这里只做简单的介绍,因为当我们安装好VS08,并且装有Office2007时,这个开发环境已经基本上搭建完毕了。

    在开发计算机上安装设计工具

    1. 安装 Office,包括主互操作程序集。有关更多信息,请参见 如何:安装 Office 主互操作程序集
    2. 安装 Office 2003 SP1 或更高版本。有关更多信息,请参见 Office 2003 Service Pack 1 网站 (http://office.microsoft.com/zh-cn/officeupdate/default.aspx)。
    3. 安装 VSTO 2005,或安装 Visual Studio Team System 产品,包括编程语言 Visual Basic 或 Visual C#。

    默认情况下,安装 Visual Basic 或 Visual C# 时 VSTO 2005 随 Visual Studio Team System 产品一起安装。

    1. 如果 Visual Studio 为英语版本,但使用的是非英语 Windows 设置,可安装 Visual Studio Tools for Office 语言包来以 Windows 使用的语言查看 Visual Studio Tools for Office 运行库消息。Visual Studio Tools for Office 语言包可从 Microsoft 下载中心 (http://www.microsoft.com/downloads/search.aspx?displaylang=zh-cn) 获得。Visual Studio Tools for Office 的非英语版本会自动安装该语言包。

    如果在安装 Office 之前安装 Visual Studio Team System 产品,则必须通过运行运行库安装文件 (VSTOR.exe) 修复 Visual Studio Tools for Office 运行库。有关更多信息,请参见 如何:安装 Visual Studio Tools for Office 运行库

    • 第一个Add-In项目:

     好了,在之前一大堆的铺垫完毕后,想必大家很想小露一手。请慢慢来,关于新建Office项目相信已经不是很难得了,如下图,我们建立一个以c#语言为基础的Office Excel Add-In(外接程序)项目。

    vsto for excel

    因为在下的机器上没有03office,不过放心,你也可以使用03的模板进行开发,这里为了方便,我使用07的模板(虽然需要.Net 3.5的框架……)然后打开后,我们看到项目结构如下:

    vsto for excel

    很简单的内容,这个ThisAddIn.CS是什么呢?且听我慢慢道来。

    这个ThisAddIn文件类似于一个外接程序(AddIn)的入口,所有比较重要的操作,包括对象的获取,均要在这里进行。

    在MSDN里说的很明了:

    When you create an Excel add-in project, Visual Studio generates a class, called ThisAddIn, which is the foundation of your solution. This class provides a starting point for writing your code, and it also exposes the object model of Excel to your add-in.

    哈哈,多的就不罗嗦了。继续我们的代码吧。从最简单的开始,我们看到ThisAddIn中,有个StartUp方法,我们在这个方法里主要写一些在外接程序加载时的处理函数,比如注册事件、初始化对象等等,如下:

    1 //注册事件
    2   this.Application.WorkbookBeforeSave += new Microsoft.Office.Interop.Excel.AppEvents_WorkbookBeforeSaveEventHandler(Application_WorkbookBeforeSave);

    我们注册了一个自定义事件,这导致在保存完毕之前,插件对我们进行响应。然后,在ThisAddIn类中,添加刚才注册事件的实现函数代码如下:

    代码
    /// <summary>
    /// 保存前的函数代码
    /// </summary>
    /// <param name="Wb">Workbook参数</param>
    /// <param name="SaveAsUI">保存选项</param>
    /// <param name="Cancel">接受取消?</param>
    void Application_WorkbookBeforeSave(Microsoft.Office.Interop.Excel.Workbook Wb, bool SaveAsUI, ref bool Cancel)
    {
    Excel.Worksheet activeWorksheet
    = ((Excel.Worksheet)Application.ActiveSheet);
    Excel.Range firstRow
    = activeWorksheet.get_Range("A1", missing);
    firstRow.EntireRow.Insert(Excel.XlInsertShiftDirection.xlShiftDown, System.Type.Missing);
    Excel.Range newFirstRow
    = activeWorksheet.get_Range("A1", missing);
    newFirstRow.Value2
    = "This text was added by using code";
    }

    至此,一个简单的Add-In程序就完成了,还等什么,让我们一起来F5一下吧!

    程序在调试时,打开一个空白的工作薄,然后我们点击保存后,注意,A1格的值被填充了。代表插件运行正常。到这里,第一篇文章就结束了,希望大家能有收获。(每一篇尽量简短干练)

    至此,一个简单的Add-In程序就完成了,还等什么,让我们一起来F5一下吧!

    程序在调试时,打开一个空白的工作薄,然后我们点击保存后,注意,A1格的值被填充了。代表插件运行正常。到这里,第一篇文章就结束了,希望大家能有收获。(每一篇尽量简短干练)——别走开,后面还有小Tips~~~

    小Tips:

    每次调试之后,我们最好都养成一个好习惯就是:回收!不然这些插件会莫名其妙的出问题,具体什么原因我实在说不上来,所以在这里先说说回收的习惯吧。

    怎么回收呢?简单——“清理解决方案”、“清理项目”,这样,就ok了!

  • 相关阅读:
    html5表单pattern属性配合正则验证电话和手机号码
    关于a href传参的中文乱码问题
    jq点击事件改变全局变量
    a标签带参页面跳转并在跳转页面接收参数
    json字段不存在,手动添加键值对
    各种类型相互转换
    Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value '�й���׼ʱ��' is unrecognized or r
    微信公众号之微信登录失败,redirect_uri域名与后台配置不一致,错误代码10003
    前后端数据json交换的问题
    jQuery EasyUI 的editor组件使用
  • 原文地址:https://www.cnblogs.com/longqi293/p/vstoforexcel1.html
Copyright © 2020-2023  润新知