之所以接触这个solution是因为manager要做一个基于excel的二次开发,网上查了查发现这个东西确实很强大,有了.NET Framework的支持,相对于以前的VBA,程序无论在robustness还是security上都有很大的进步。只是这方面的资料真的很少,特别 是中文的,msdn上也往往是寥寥数语,所以希望自己摸索和在网上扒拉的东西能对来这里的人有帮助吧,如有指教,欢迎留言。
      先感谢下Paladin.lao 博友,热情地帮我解决VSTO方面的疑问。
      VSTO笔记从下面开始:
———————————————————————————————————————————————–
(一) 介绍
我们通常有三种方法来对Excel进行再开发:
一是扩展插件(AddIn)。这是开发Excel用户自定义函数的首选。
二是VSTO(Visual Studio Tool for Office)。这是开发Excel内嵌功能的首选(例如按钮、菜单等等)。
三是RTD(Real Time Data)。这是开发Excel实时数据应用程序的首选。 (摘自计世网商用软件频道 原文链接:http://soft.ccw.com.cn/programing/other/htm2008 /20080926_509725.shtml)
对于那些对界面要求比较高的需求,比如需要增加按钮,浮动工具条,或者2007的Ribbon,VSTO是首选,VSTO采用Visual Studio为平台,语言一般VSTO用C#和VB。对于VS 2005,新建工程时只有VB和C#提供VSTO的模板。Addin 更多是作为函数库被EXCEL调用,可以用C++编写。
下面从VSTO工程的建立开始讲起。

 

(二) 工程的新建

在Visual Studio平台下, C#语言选项中,可以看到Excel Workbook模板,在Visual Basic下也可以看到类似的模板(Figure 1)

Figure 1

随后选择excel文件,在这里要说明的是,VSTO开发后生成的“程序”就是一个xls文件,这个xls不是最后发布才有的,而是在工程创建 时就要建立。开发者可以新建一个xls,也可以在其他已经存在的xls的基础上进行开发(Figure 2)。大多数情况下,需求中常常需要已有的xls中的数据,并基于此进行操作,所以选择后者的比较多。

注意:选择基于已有的xls文件并不是基于原文件做开发,而是将此文件复制到工程目录下,基于副本开发。

Figure 2

之 后就是工程的开发界面了,我们可以看到在solution管理页中,xls文件中的每个sheet都对应着一个项(Figure 3),开发者可以对其进行独立地界面设计和功能代码编写。每个sheet有自己的startup和shutdown函数,整个工程也有自己的 startup和shutdown,运行时先执行工程的startup,再执行各个sheet的startup。

Figure 3

在Figure 3中,工程项目外,还有两个.cs,一个MyUserControl,一个WinForm,这两个是我后来添加的控件。虽然在每个sheet的设计界面, 用户可以加入控件,但是供选择的控件很有限,尤其缺乏容器类控件,另外,在sheet中添加的控件只能在该sheet中才能看到,所以VSTO的界面设计 常常需要引入自定义控件和自定义窗口,并动态调用,使得界面更加灵活。具体以后会总结。

 

(三) 最后列出几本VSTO方面为数不多的参考资料。

中文版: VSTO 编程指南 (Eric Carter著)    ——   很多人推荐的参考书,本人也买了本,但是这本书讲的比较宽泛,各个方面都点到了,但是细节上没有谈及。所以对于编程中遇到的一些比较具体的问题帮助有限。另外,它只提供VB的代码。

 

英文版: Visual Studio Tools for Office(Eric Carter著)  ——  VSTO 编程指南的英文版,批注同上。

Professional VSTO 2005(Alvin Bruney著)  ——  虽然不厚,但是在主要的方面讲解的比较深入,在某些方面给了我很大帮助,而且它提供VB 和 C#两种代码。 提供下载如下:

Professional vsto 2005.pdf

 

——————————————————————————————-

66℃绿茶空间原创,转载请注明出处,感谢博客园!

 

http://www.cnblogs.com/felixfang/archive/2010/08/16/1800797.html

赞赏

微信赞赏支付宝赞赏

「赏不在多,觉得文章有用,就赞赏下吧!」

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据