Web Analytics
yangyang

码农兼一个普普通通小青年

All Posts


浅谈Excel开发:八 Excel 项目的安装部署

前面几篇文章讲解了Excel开发的几个比较主要的也是比较重要的方面,比如菜单系统,Excel对象模型,自定义函数,RTD函数,异步自定义函数,用户自定义任务面板等,在实际开发中我们还会遇到各种“千奇百怪”的问题,以及开发中的一些注意事项和技巧等,后面有空我会写文介绍。当我们的Excel外接应用程序开发好了之后,需要给用户使用,这就涉及到了应用程序的安装与部署,本文就简要介绍下Excel项目的安装和部署。 和一般的.NET 中的Windows Form程序不同,Excel开发通常是一种插件式的开发机制,它需要借宿在Excel上,并通过调用Excel的API来实现特定的业务逻辑。宿主Excel在运行的时候,会根据当前用户以及Excel版本信息,读取注册表特定位置,以查找在本机当前用户下面注册的插件信息,然后逐个加载。这里面就涉及到了和安装部署相关的一些 …

Excel Development Shared Add-in

Kinect for Windows SDK开发入门(十九):Kinect Fusion

Kinect for Windows SDK1.7中引入了Kinect Fusion功能。在1.8的SDK中对该功能进行了改进和强化,Kinect Fusion能够使得我们使用Kinect for Windows 传感器来进行真实场景的三维几何重建,目前已支持导出.obj及.stl等三维数据格式。Kinect Fusion技术在支持GPU加速的机器上能够对物体进行实时的三维建模。和传统的三维建模方式相比,Kinect Fusion最大的优势是快速便捷。 Kinect Fusion可以用于工业设计,3D打印,游戏制作,医疗教育等领域。 下图是Kinect Fusion的工作流程。Kinect传感器获取的深度影像数据在刚开始的时候有很多数据丢失,通过移动Kinect传感器对物体进行扫描,几秒钟过后就能够创建足够平滑的重建的静态场景,产生点阵云以及3D表面 …


浅谈并发与并行(二)

上文讲解了.NET中的采用Task可以实现任务的并行。除了任务的并行之外,还有数据的并行。和任务的并行不同,数据的并行是指并行的源头不是算法的代码,而是算法操作的数据的本身,TPL (Task Parallel Library)中提供了几个数据并行的API. 一 数据的并行 1.1 Parallel.For和Parallel.ForEach for 和foreach语句也适合进行并行化。实际上,随着并行计算的流行,对这种循环遍历进行并行化也有过很多种尝试。这些方法包括对在编程语言进行扩充等,比如C++里面的OpenMP标准。C#并行类库(Task Parallel Library, TPL)通过提供一些API实现了数据并行化功能,这就是Parallel.For和Parallel.ForEach方法,分别对应平常用到的for和foreach。 回到上文中的遍历数 …

Concurrent Parallel Interlock Lock-free Programming .NET Performance Optimizing

浅谈Excel开发:七 Excel 自定义任务窗体

前面花了三篇文章讲解了Excel中的UDF函数,RTD函数和异步UDF函数,这些都是Excel开发中的重中之重。本文现在开始接着第二篇文章的菜单系统开始讲解Excel中可供开发的界面元素,本文要讲解的是Excel中的自定义任务面板(Custome Task Panel,CTP) 。 自定义任务面板在Office 2003中就引入了,相信大家都用过Word中的字典和插入剪贴画功能,左侧的边栏就是自定义面板。如下图: 但是Office 2003的自定义面板并没有给我们开发人员提供开发接口,也就是说,我们不能创建我们的自定义的任务面板。 从Office 2007版本开始,Office的一个显著变化是添加了更多的快速预览以及自定义面板,这在Office的各个产品中均有体现。如下图: 更重要的是,从Office 2007开始,CTP接口开放使得 …

Excel Development CTP Custome-Task-Panel VSTO Shared Add-in

浅谈Excel开发:六 Excel 异步自定义函数

上文介绍了Excel中的自定义函数(UDF ),它极大地扩展了Excel插件的功能,使得我们可以将业务逻辑以Excel函数的形式表示,并可以根据这些细粒度的自定义函数,构建各种复杂的分析报表。 普通的UDF自定义函数的基本执行逻辑是,Excel接受用户输入的函数表达式,然后通过UDF函数的处理逻辑进行处理,在处理过程中,Excel 的UI界面会一直等待函数体执行完成之后更新单元格数据。和大多数同步应用一样,同步的UDF函数会阻塞Excel UI线程,并且不方便动态扩展计算能力,在处理逻辑比较复杂、进行耗时的计算逻辑的时候,会造成较差的用户体验。所以我们需要开发异步的UDF函数。 一 问题的提出 通常,当用户在Excel中输入自定义函数的时候,我们希望实现以下表现: 开启另外一根线程或者在线程池中处理函数计算逻辑(不同于Excel UI线程)。 同时 …

Excel Development Lock Free Excel UDF Shared Add-in

Kinect for Windows SDK 1.8的改进及新特性

今年3月, 微软推出了Kinect for Windows SDK 1.7 更新,包括了手势识别 Kinect Interactions 和实时 3D 建模 Kinect Fusion 两项新技术。 昨天,微软发布了Kinect for Windows SDK的1.8版本,新版本SDK进行了少量更新,但对Kinect Developer Toolkit中的示例进行了大量更新,包括新添加了对HTML5的支持,新的背景移除功能、Kinect Fusion 的色彩捕捉功能、 Kinect Fusion追踪的稳健性提升,以及多Kinect固定实时三维建模等功能。 下面就来看看这些新功能的具体细节: 新的背景移除示例: 背影移除技术又成为“蓝屏抠像”技术,就是将人物从背景中抠除出来,然后将背景替换为其他的场景的技术,这个在诸如天气预报,以及一些电 …

Kinect SDK

浅谈Excel开发:五 Excel RTD函数

上文介绍了Excel中的UDF函数,本文介绍一下同样重要的RTD函数。从Excel 2002开始,Excel引入了一种新的查看和更新实时数据的机制,即real-time data简称RTD函数,他是一种Push-Pull的方式,及在需要更新数据的时候,RTD给Excel Push一个消息说要更新数据,Excel在收到消息后主动拉取Pull新的数据。RTD函数最开始的用途在于更新实时变化的数据,比如股票实时行情数据,实时天气预报数据,球队比赛得分数据等等。 在过去,要实现这些功能,需要依赖一些其他诸如Dynamic Data Exchange(DDE)技术来访问实时数据资源,但DDE和标准的Excel函数样式有很大的不同,并且并不是为Excel获取实时数据而设计的,缺乏健壮性,并且效率不高,RTD的引入解决了这些问题。 本文首先介绍RTD的一些常用的使用场景, …

Excel Development Excel RTD Shared Add-in

浅谈Excel开发:四 Excel 自定义函数

我们知道,Excel中有很多内置的函数,比如求和,求平均,字符串操作函数,金融函数等等。在有些时候,结合业务要求,这些函数可能不能满足我们的需求,比如我想要一个函数能够从WebService上获取某只股票的最新价;我想要一个函数能够获取当前的天气情况,这些需求我们可以通过编写Excel自定义函数(User Define Function ,UDF )来实现,这样,在Excel中直接调用我们的自定义函数即可满足特定的业务需求,一般地,因为这种自定义函数的粒度相对较小,所以我们可以根据业务需求编写很多基础的自定义函数,然后以这些自定义函数为基础,编写各种复杂的分析报表。 编写UDF的方式有很多种,比如直接在VBA种编写自定义函数;如果您熟悉C++,可以将自定义函数编写到XLL中,不熟悉也可以使用ExcelDNA这个开源的库使用.NET技术也可以将您的代码编译为XLL;如果熟悉 …

Excel Development Excel UDF XLL ExcelDNA

浅谈Excel开发:三 Excel 对象模型

前一篇文章介绍了Excel中的菜单系统,在创建完菜单和工具栏之后,就要着手进行功能的开发了。不论您采用何种方式来开发Excel应用程序,了解Excel对象模型尤其重要,这些对象是您与Excel进行交互的基石。据不完全统计,Excel的对象模型中有270多个对象及超过5000多个属性和方法。通过这些对象及方法,您可以充分利用Excel来定制化您的插件。 Excel的所有对象,事件,方法和属性在这里不可能全部介绍完。本文简要介绍一下Excel的整体文档对象模型,以及一些比较重要的,平常开发中需要频繁接触到的对象,属性,事件及方法,如Application,Range对象等,使您对Excel的整个结构有一个简单的了解。后面在编程中遇到问题了,您可以快速定位知道需要设置或者调用哪个对象及其方法,然后根据关键字到Google或者MSDN上方便查找。本文大部分内容参照MSDN上的这篇文章 …

Excel Development Excel Object Model

浅谈Excel开发:二 Excel 菜单系统

在开始Excel开发之前,需要把架子搭起来。最直接的那就是Excel里面的菜单了,他向用户直观的展现了我们的插件具有哪些功能。菜单出来之后我们就可以实现里面的事件和功能了。Excel菜单有两种形式,一种是Excel 2003及之前的传统菜单样式,一种是Excel 2007及之后的Ribbon菜单。本文首先讲解Excel 2007中菜单的创建,包括使用Visual Studio可视化设计菜单,菜单的RibbonXml配置,然后讲解如何在Excel 2003中创建自定义菜单。最后演示如何使用SharedAddin技术将两者结合起来,即在2003版本中显示原始的菜单样式,在以2003上版本中动态加载Ribbon菜单,从而达到版本的兼容。 一 Excel 的Ribbon菜单及Ribbon Xml文件 要演示菜单的创建,我们首先创建一个VSTO程序,如图在VS中创建一个Excel外接程序: …

Excel Development VSTO Shared Add-in Ribbon XML