Web Analytics
yangyang

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

All Posts


浅谈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

浅谈Excel开发:一 Excel 开发概述

做Office相关的开发工作快一年多了,在这一年多里,在插件的开发中遇到了各种各样的问题和困难,还好同事们都很厉害,在和他们的交流讨论中学到了很多的知识。目前Office相关的开发资料是比较少的,最最开始的时候,我看的是一本英文资料,然后再就是MSDN上面去提问了。所以我想写一点东西,让大家也少走一些弯路。 这篇文章就简要介绍一下Office开发的一些相关的知识,使大家对这个有一个大体的了解。 首先来看一看Office 的开发方式。 一 Office开发方式 1 VBA (Visual Basic Application) VBA是一种Visual Basic的宏语言,它应该是最早的Office提供定制化的一种解决方案,在1994年发行的Excel 5.0版本中,就具备了VBA的宏功能。从名字上似乎可以看出他是VB的一个子集,和Visual …

Excel Development VSTO Shared Add-in

[译]Kinect for Windows SDK开发入门(十八):Kinect Interaction交互控件

本文译自 http://dotneteers.net/blogs/vbandi/archive/2013/03/25/kinect-interactions-with-wpf-part-i-getting-started.aspx,建议直接点击查看。 今年三月份发布了1.7版本的SDK,这一版本的SDK较前一版本最大的变化是添加了Kinect Interactions 和 Kinect Fusion。Kinect Interactions 提供了一些新的带有姿势识别的控件如 push-to-press 按钮, grip-to-pan 列表控件, 而且支持多用户,同时二个人进行的交互,这些新添加的控件能够非常方便的集成到应用程序中,极大的简化了开发和调试过程。 1.7 SDK中新增的第二个功能是去年在Build 2012大会上提到的Kinect Fusion,他能 …

Kinect Interaction Kinect SDK

Kinect开发文章目录

整理了一下去年为止到现在写的和翻译的Kinect的相关文章,方便大家查看。另外,最近京东上微软在搞活动, 微软 Kinect for Windows 京东十周年专供礼包 ,如果您想从事Kinect开发,没有设备的话,有兴趣可以上去看看。 如果您在开发中遇到问题,可以到微软MSDN K4W板块提问,那儿有专门的工程师回答您的问题,另外我新建了一个QQ群 254015296 ,如果您有兴趣也可以加一下一起讨论共同学习。以下所有和Kinect开发相关的文章,希望对您有所帮助。 1. [译]Kinect for Windows SDK开发入门(一):开发环境配置 2. [译]Kinect for Windows SDK开发入门(二):基础知识 上 3. [译]Kinect for Windows SDK开发入门(三):基础知识 下 4. [译]Kinect for …

Kinect SDK

浅谈并发与并行(一)

一、引言 前天在GitHub上看到一幅图,问如何向五岁的小孩讲解并发和并行。然后有人以这幅图做答: 这幅图有点儿意思,用咖啡机的比喻来形容并发和并行,从中最直接的体会是,并发是有状态的,某一线程同时执行一个任务,完了才能进行到下一个,而并行是无状态的。 近些年,计算机的处理能力成指数能力增长。处理能力也越来越快,以前的一些工作站现在都可以移植到笔记本电脑或者手持设备上。但是近几年,由于处理器的处理速度已经达到了极限,所以处理器开始向多核方向发展,而提高程序性能的一个最简单的方式之一就是充分利用多核处理器的计算资源。但要编写利用多核处理器处理的程序并不那么简单。所以一些函数是编程语言,如F#,Scala,Erlang等又开始流行起来,因为他们带来的不可变性,递归思想等在一定程度上简化了并行和并发编程。 本文和下文从任务并行和数据并行两个方面,简要讨论 …

Concurrent Parallel QuickSort .NET