VSTO+WinForm+WebService+WCF+WPF示例

摘要:
然后介绍必要的类库,如图1所示。在图1中创建WindowApplication的目的是熟悉Office操作的语法。现在让我们使用代码实际操作Excel文件并实现单元格下拉菜单功能(不使用控件),使用代码调用打印功能。这是Excel自己的打印功能。功能3如图5所示。它是一个WinForm控件(确定和确定)。它也可以动态创建。代码可以单独引用函数7,

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

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

clip_image001

图-1

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

clip_image003

图-2

      需要注意的地方

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

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

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

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

clip_image005

图-3

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

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

clip_image007

图-4

clip_image009

图-5

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

功能3:生成某一年日历

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

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

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

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

clip_image010

图-6

clip_image011

图-7

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

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

clip_image012

图-8

它所包含的功能如下

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

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

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

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

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

clip_image013

图-9

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

clip_image015

图-10

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

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

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

clip_image017

图-11

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

clip_image018

图-12

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

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

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

clip_image019

图-13

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

clip_image021

图-14

简单说下项目的功能

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

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

clip_image022

图-15

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

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

      端午节,吃粽子去了,祝各位节日快乐!

示例代码

ExampleVSTO

http://www.cnblogs.com/xiyang1011/archive/2011/06/07/2074025.html

免责声明:文章转载自《VSTO+WinForm+WebService+WCF+WPF示例》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在Java中使用Socket模拟客户端和服务端(多线程)Jmeter系列(43)- 详解 Jmeter 图形化 HTML 压测报告之 Charts 模块下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux中vi显示中文乱码的问题

由于在windows下默认是gb编码,而我的vim默认是utf-8(gedit默认也是utf-8),所以打开会成乱码。修改了一下配置文件,使vi支持gb编码就好了。$vi ~/.vimrclet &termencoding=&encodingset fileencodings=utf-8,gbk$:wq再次打开vi,显示就正常了。vim中编...

iptables基础知识详解

iptables命令是Linux上最常用的防火墙代理,可以很好得控制进出流量以及限速等。 iptables不是真正意义上得防火墙,我们应该把它理解为一个代理,用户通过iptables这个代理,将用户的安全设定执行到对应的"安全框架"里面,【netfilter】,这个框架才是真正的防火墙。 netfilter位于内核空间。 iptables是一个命令行...

rsync常用命令及格式

rsync在同步文件夹内容这个工作上应用非常广泛,但是rsync本身命令还是比较复杂,本文总结一下: rsync = remote sync的简称 ,它 被用于在linux/unix系统中执行备份操作。rsnync用于从一个位置到另外一个位置同步文件和文件夹。备份的地址可以是本地也可以是remote server。 rsync的重要功能: speed 首次...

WPF做的小型音乐播放器升级版

上一个版本 是利用周日休息时间制作的,考虑不充分,开发时间也短,只完成了加载频道列表和播放歌曲的功能.这几天晚上在家进行了部分加工,首先是完善了部分功能,其次对部分不合理的设计进行了重构(还不知道重构得合理不合理). 首先看下部分功能截图: 首先是搜索功能完成了部分.点击搜索功能会切换到该频道,并加载歌曲放歌.设计时,就把搜索做成了一个模块,频道是一个模...

Android中怎样自己制作su

本文原博客:http://hubingforever.blog.163.com/blog/static/171040579201372915716149/ 在Android源代码的systemextras(比方Android4.0systemextras)下新建一个文件夹。比方su_robin文件夹 在su_robin文件夹下包括以三个文件: su.h...

golang学习之生成代码文档

go doc 工具会从 Go 程序和包文件中提取顶级声明的首行注释以及每个对象的相关注释,并生成相关文档。 一般用法: go doc package 获取包的文档注释,例如:go doc fmt 会显示使用 godoc 生成的 fmt 包的文档注释。 go doc package/subpackage 获取子包的文档注释,例如:go doc cont...