[转]VSTO+WinForm+WebService+WCF+WPF示例
看到一个不错的示例程序分享给大家,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示例相关推荐
- [WCF编程]1.WCF入门示例
一.WCF是什么? Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,整合了原有的windows通讯的 .net Remotin ...
- WinForm中使用WPF的控件
在WinForm中可以使用WPF中的控件,或者由WPF创建的自定义控件: 步骤1:创建WinForm工程: 步骤2:在WinForm工程的解决方案资源管理器中,在刚刚创建的WinForm解决方案中新建 ...
- C# 创建、部署和调用WebService的简单示例
C# 创建.部署和调用WebService的简单示例 webservice 可以用于分布式应用程序之间的交互,和不同程序之间的交互. 概念性的东西就不说太多,下面开始创建一个简单的webservice ...
- WCF,WPF,WWF 的新读音?WinCom, WinPrez, WinFlow
这已经不是什么秘密,微软产品在研发阶段总会起一些 漂亮的 codename ,比如:WinFX的组件 Avalon,Indigo.当发布的时候,再换上正式的名字.不过这次,WinFX 组建正式发布的名 ...
- WinForm如何使用WPF的控件
在WinForm中可以使用WPF中的控件,或者由WPF创建的自定义控件: 步骤1:创建WinForm工程: 步骤2:在WinForm工程的解决方案资源管理器中,在刚刚创建的WinForm解决方案中新建 ...
- WebService/WCF
(一)如何发布WebService呢?使网络中其它机器能使用我的WebService 我写了一个简单的WebService,在本机上测试没有问题. 但网络中其它机器访问我的WebService时, ...
- C# 创建、部署和调用WebService的简单示例 webservice 可以用于分布式应用程序之间的交互,和不同程序之间的交互。 概念性的东西就不说太多,下面开始创建一个简单的webservi
C# 创建.部署和调用WebService的简单示例 webservice 可以用于分布式应用程序之间的交互,和不同程序之间的交互. 概念性的东西就不说太多,下面开始创建一个简单的webservice ...
- wcf wpf mfc 区别
wcf:windows communication foundation 是微软将众多通信技术集成到一起的一个分布式通信开发框架.比如.net remoting.web service.msmq等. ...
- ComponentOne使用技巧——从Winform穿越到WPF
概述 WPF 和 Winform 是两个单独的平台,但二者又都是基于 .NET 4.0 以上版本开发的,所以很多.NET开发人员就开始研究如何在WPF中使用Winform.微软已经架设了两个开发平台的 ...
最新文章
- asp.net的get和post请求
- DuiLib学习笔记5——标题栏不能正常隐藏问题
- 向前的快捷键_枣院生活快捷键使用手册,你值得拥有
- AF_UNIX和AF_INET
- (转)!注意:PreTranslateMessage弹出框出错
- node搭建服务器,写接口,调接口,跨域
- React-Native填坑之TextInput value属性
- Win11系统如何设置任务栏新消息提醒
- 【Word2Vec】word2vec是如何得到词向量的?
- 搭建MyBatis框架
- CSS中文手册下载、使用技巧(附下载链接,压缩包被禁用了)
- 开发者故事|朝九晚六大小周,我就是快乐的技术人
- 前端作业(一)——我在《世纪佳缘注册页面》作业中遇到的问题
- python计算消费额_11、Python 数据分析-用户消费行为分析
- Java版本微信授权登录(测试版)
- 学会这些方法,扩展磁盘分区还不是轻轻松松?
- 几款好用的报表制作软件!!!
- topcoder srm 715 div1 -23
- python if in 表达式方式
- 小米净水器更换滤芯步骤和水龙头亮黄灯的解决办法
热门文章
- mysql 恢复root权限_Linux MySQL root权限恢复[图文]
- php 压入元素,php 数组增加元素的方法 array_push 和 array_merge
- idea maven 删除dependencies_使用IDEA创建Maven工程 创建javase工程
- 小学计算机应用能力考核记录,中小学教师信息技术应用能力校本应用考核规范...
- java操作mysql数据库实例_jdbc操作mysql数据库实例
- 显示not_Excel函数06:逻辑函数之OR、NOT函数应用实例分析
- 小分子php蛋白,如何研究小分子抑制蛋白降解途径? - 分子生物 - 小木虫 - 学术 科研 互动社区...
- Disable Auto Detect Keyboard Layout in Win10
- android 连接ble键盘,如何在Android上以编程方式配对和连接HID蓝牙设备(蓝牙键盘)...
- 深度学习模型压缩方法