看到一个不错的示例程序分享给大家,Vincent.Q的《VSTO+WinForm+WebService+WCF+WPF示例》很不错!
原文如下:
   前段时间去图书馆借书,无意中发现这样一本书,书名是”新一代 .NET Office开发 Excel篇”,书名比较有意思,就借出来看看.看完以后,发现确实不错.它挖掘了Office产品中我们经常忽略的部分.比如图表,透视表等.下面根据我对这本书的笔记来看看VSTO这个被微软偷偷发布,而被我们遗弃的东东到底是什么样子?由于这本书只针对Excel部分做操作,所以这是重点,不过后面还有一个示例是基于Word的.

我们首先创建一个WindowApplication程序,然后引入必要的类库.如图-1所示.

图-1

创建WindowApplication的目的是熟悉Office操作的语法.我们现在用代码来实际操作一下Excel文件,代码比较简单,这里不再详述,如图-2所示

图-2

需要注意的地方

1. 在循环获取单元格值的时候,我们可以先将值放在一个二维数组中,再从二维数据中获取单元格值,效果会提升好几个档次.推荐使用

2. 使用完毕以后,或者窗体关闭时,一定要调用app1.Quit()方法,直接对Excel文件操作的话,进程方面还需要控制和处理,因为这里有隐患.

以上讲述的是最基本的操作,包括单元格取值和赋值等.

下面看一个VSTO的程序,VSTO的程序环境好像需要打个补丁之类的,具体情况记不清了.先说下我的环境VS2008 SP1+NET3.5SP1,环境搭好以后,我们直接创建一个项目文件,我的Office版本是2007.如图-3所示.如果没出现的话,请自行解决.博客园也有不少这方面的贴子,搜索下就OK了.

图-3

这里的项目文件是ExcelWorkBook1,这演示了如下几个功能.

功能1:Sheet1表单的录入,其数据取自Sheet2,并实现单元格下拉菜单功能(没有使用控件),并根据下拉菜单选中项联动生成其他单元格值,并计算单价和数量,生成金额的单元格值.如图-4所示

图-4

图-5

功能2:使用代码调用打印功能.是Excel自身的打印功能.如图-5所示

功能3:生成某一年日历

功能4:获取系统颜色,颜色取自System.Drawing.KnownColor[]对象

功能5:获取图形,注意是图形,不是图表

功能6:增加winform控件,对的,是WinForm控件(确定一定以及肯定).而且还可以动态创建.代码自行参考

功能7:还增加了一个这样的控件,如图-6所示.估计大家以前很少用到吧,呵呵.我看完这本书才知道的.它的作用是扩展Office项目文件的功能.比如:可以利用这个控件,拖动一些Winform控件,做些Office项目文件不能做的事情.比如:可以在Excel放置一些待播放的视频或音频文件.使用这个控件调用播放器,或显示其详细信息等.最常用的场景就是单据页面.使用Excel加载列表数据,这个控件做为单据页面,再搞个保存,取消按钮,也挺简单的.控件效果图如图-7所示

图-6

图-7

ExcelWorkbook1的示例文件,我们只是小试牛刀一下.下面的示例更加强大.很佩服微软,将事情简单化.只是我们自己总把事情复杂化.唉,悲催.

继续看ExcelWorkbook3的项目文件,项目布局如图-8所示. 这个项目文件包含如下几个功能

图-8

它所包含的功能如下

功能1:代码方式增加单元格批注功能

功能2:动态增加菜单栏,工具栏,事件可自行绑定

功能3:更改Application级别的属性

功能4:单元格或Sheet级别的复制

功能5:图表,整个Sheet就是一个图表,它与Sheet的级别相同,数据源可取自Excel文件本身,也可获取外部数据源.如图-9所示

图-9

功能6:图表,某个Sheet中,即包含数据也包含图表,如图-10所示

图-10

功能7:透视表.哈,这个功能要重点说下,这个功能有点像BI里的功能.可以钻取其下面的数据.如图-11所示.左侧部分是原始数据,右侧是已透视过的数据,而且生成的数据,字段列还可以自行显示/隐藏等.而且还可以根据透视数据生成图表,在示例代码中也包含的,可自行参数.这个功能可以用在含有决策功能的功能系统里,比如:某个部门的销售额,某个科室的日收入支出表等.使用Excel的这个功能,比起那些图表控件,不知道要方便多少.有篇参考文章,地址如下:

http://www.cnblogs.com/cameo/archive/2008/12/01/1344956.html

不过,有个技术点没有研究清楚.就是VSTO的项目文件,发布好以后,如何在Web程序里显示.有知道的童鞋,请点拔一二.

图-11

功能8:调用WebService功能.一开始感觉会非常复杂.尝试之后,才发现其实和WinForm调用WebService方式是一样的.如图-12所示.WebService的地址是我在网上找的,貌似不太稳定,有时会连不上.大家可以自己另外找个.

图-12

以上是关于Excel部分的示例.下面说一个更加重量级的,基于Word的插件式功能.它使用了WPF和WCF技术,算是很潮吧.它包括3个项目文件.如图-13所示.

这个项目参考地址如下http://msdn.microsoft.com/zh-cn/magazine/cc163292.aspx

有示例demo可以直接下载,我是将其中的代码自已写了一遍!这里要注意的是WCF的发布!

图-13

先说下这个Word插件的功能,是将一组图片以幻灯片方式加载到Word文档中,选中某张图片,将图片描述显示到Word文档中.基中,展示图片的控件就是WPF,它被用在了WinForm控件中(有点意思吧).图片描述文字放在XML文件中,通过WCF方式获取(更有点意思吧).先看下最终的效果图,如图-14所示

图-14

简单说下项目的功能

WCFServiceLibrary项目,功能是定义WCF服务,有点意思的是,这个类库是Net2.0的,加载一下WCF的相关类库,也是可以用的.我之前一直以为只有3.5才可以呢.

WPFControlLibrary是WPF的用户控件,类库是3.5的.创建好WPF控件以后,如何转为WinForm控件呢?是通过创建WinForm的用户控件,然后里面再加载WPF控件就可以了.如图-15所示

图-15

WordAddIn1项目文件创建的是类型的项目文件.其中的WinFishEyeByWPF控件就是包装了WPF控件的WinForm自定义控件.里面的代码不详细讲了.大家自己看吧,感觉不是很复杂的.有VSTO基础的人看起来会更容易理解!

好了,这个示例就讲这么多,之所以要讲一篇VSTO的文章,是因为它其实可以代替我们做很多事情的,只是我们平常忽略了他,只是把Excel文件用来存储数据.导入导出数据使用,如果合理运用,我们完整可以基于Office文档开发出一套管理系统,功能不比使用VS开发出的WinForm或WebForm逊色的.

原文链接:Vincent.Q的《VSTO+WinForm+WebService+WCF+WPF示例》,原文有示例代码可以下载!

转载于:https://www.cnblogs.com/SanMaoSpace/archive/2013/02/23/2923662.html

[转]VSTO+WinForm+WebService+WCF+WPF示例相关推荐

  1. [WCF编程]1.WCF入门示例

    一.WCF是什么? Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,整合了原有的windows通讯的 .net Remotin ...

  2. WinForm中使用WPF的控件

    在WinForm中可以使用WPF中的控件,或者由WPF创建的自定义控件: 步骤1:创建WinForm工程: 步骤2:在WinForm工程的解决方案资源管理器中,在刚刚创建的WinForm解决方案中新建 ...

  3. C# 创建、部署和调用WebService的简单示例

    C# 创建.部署和调用WebService的简单示例 webservice 可以用于分布式应用程序之间的交互,和不同程序之间的交互. 概念性的东西就不说太多,下面开始创建一个简单的webservice ...

  4. WCF,WPF,WWF 的新读音?WinCom, WinPrez, WinFlow

    这已经不是什么秘密,微软产品在研发阶段总会起一些 漂亮的 codename ,比如:WinFX的组件 Avalon,Indigo.当发布的时候,再换上正式的名字.不过这次,WinFX 组建正式发布的名 ...

  5. WinForm如何使用WPF的控件

    在WinForm中可以使用WPF中的控件,或者由WPF创建的自定义控件: 步骤1:创建WinForm工程: 步骤2:在WinForm工程的解决方案资源管理器中,在刚刚创建的WinForm解决方案中新建 ...

  6. WebService/WCF

    (一)如何发布WebService呢?使网络中其它机器能使用我的WebService 我写了一个简单的WebService,在本机上测试没有问题.   但网络中其它机器访问我的WebService时, ...

  7. C# 创建、部署和调用WebService的简单示例 webservice 可以用于分布式应用程序之间的交互,和不同程序之间的交互。 概念性的东西就不说太多,下面开始创建一个简单的webservi

    C# 创建.部署和调用WebService的简单示例 webservice 可以用于分布式应用程序之间的交互,和不同程序之间的交互. 概念性的东西就不说太多,下面开始创建一个简单的webservice ...

  8. wcf wpf mfc 区别

    wcf:windows communication foundation 是微软将众多通信技术集成到一起的一个分布式通信开发框架.比如.net remoting.web service.msmq等. ...

  9. ComponentOne使用技巧——从Winform穿越到WPF

    概述 WPF 和 Winform 是两个单独的平台,但二者又都是基于 .NET 4.0 以上版本开发的,所以很多.NET开发人员就开始研究如何在WPF中使用Winform.微软已经架设了两个开发平台的 ...

最新文章

  1. asp.net的get和post请求
  2. DuiLib学习笔记5——标题栏不能正常隐藏问题
  3. 向前的快捷键_枣院生活快捷键使用手册,你值得拥有
  4. AF_UNIX和AF_INET
  5. (转)!注意:PreTranslateMessage弹出框出错
  6. node搭建服务器,写接口,调接口,跨域
  7. React-Native填坑之TextInput value属性
  8. Win11系统如何设置任务栏新消息提醒
  9. 【Word2Vec】word2vec是如何得到词向量的?
  10. 搭建MyBatis框架
  11. CSS中文手册下载、使用技巧(附下载链接,压缩包被禁用了)
  12. 开发者故事|朝九晚六大小周,我就是快乐的技术人
  13. 前端作业(一)——我在《世纪佳缘注册页面》作业中遇到的问题
  14. python计算消费额_11、Python 数据分析-用户消费行为分析
  15. Java版本微信授权登录(测试版)
  16. 学会这些方法,扩展磁盘分区还不是轻轻松松?
  17. 几款好用的报表制作软件!!!
  18. topcoder srm 715 div1 -23
  19. python if in 表达式方式
  20. 小米净水器更换滤芯步骤和水龙头亮黄灯的解决办法

热门文章

  1. mysql 恢复root权限_Linux MySQL root权限恢复[图文]
  2. php 压入元素,php 数组增加元素的方法 array_push 和 array_merge
  3. idea maven 删除dependencies_使用IDEA创建Maven工程 创建javase工程
  4. 小学计算机应用能力考核记录,中小学教师信息技术应用能力校本应用考核规范...
  5. java操作mysql数据库实例_jdbc操作mysql数据库实例
  6. 显示not_Excel函数06:逻辑函数之OR、NOT函数应用实例分析
  7. 小分子php蛋白,如何研究小分子抑制蛋白降解途径? - 分子生物 - 小木虫 - 学术 科研 互动社区...
  8. Disable Auto Detect Keyboard Layout in Win10
  9. android 连接ble键盘,如何在Android上以编程方式配对和连接HID蓝牙设备(蓝牙键盘)...
  10. 深度学习模型压缩方法