池州会计继续教育网:Excel在XLL方面所做的更新
来源:
高顿网校
2014-06-27
高顿网校友情提示,*7池州会计继续教育网上总结信息Excel在XLL方面所做的更新等内容公布如下: Quick detour #3: Updates we have made to XLLs
轻车绕便道,题外不言他 #3:Excel 12在XLL方面所做的更新
In the past few months, I have written a couple of articles (big grid, multi-threaded calculation) that prompted comments and questions along the lines of “what about XLLs?” Since the email questions have actually been picking up in frequency (I guess a lot of readers are also XLL authors), I thought I would write a quick article that outlines the changes we are making in this area to support new functionality.
在过去几个月里,围绕“XLL将会怎样”的主题我有写过两篇文章(《更大的表格》、《多线程计算》),给出了一些相关的注解及问题。由于我收到的邮件中关于这方面的提问至今仍有相当的频度(我估计这其中的许多读者也是XLL加载宏的作者),我想我还是得再写上一篇简短的文章,来给大家描绘一下我们在新函数的支持方面所作的变更。
Stepping back for a minute, let me briefly explain XLLs. An XLL is a DLL that is written so that Excel can open it directly. XLLs can be used for a number of things, but (in my experience at least) the most common use of XLLs is creating user-defined worksheet functions (UDFs) to supplement Excel’s intrinsic functions. Developers who write XLLs do so for a number of reasons, the paramount being performance.
先耽搁您几分钟时间,让我来简要地介绍一下XLL为何物。
XLL文件实际上就是一个能够让Excel直接打开的DLL(动态链接库)文件。虽说XLL文件可以用来做很多事情,不过,至少在我的经验中是这样,其最通常的应用是创建用户自定义工作表函数,以扩充Excel的内置函数。(译者注:就这一点而言,用VBA也可以做,那为什么还要编译成XLL文件呢?)开发人员这样做的原因有很多,其中一个最重要的原因就是为了提高执行效率。
We have made three changes to XLLs in Excel 12, primarily to give developers access to new functionality. With Excel 12, XLL authors will have support for
·The bigger grid
·More function arguments
·Multi-threaded calculation
在Excel 12中,我们对XLL的相关应用作了三个方面的变更,主要目的是为了方便开发人员访问新的函数。透过Excel 12,XLL的开发者们将获得下列支持:
·更大的表格
·更多的函数参数
·多线程计算
Big grid and more arguments
更大的表格及更多的参数
When building an XLL today, developers can use a special Excel data type called an “XLOPER”. An XLOPER is essentially a structure that allows developers to pass data types like references, arrays, and error values to and from Excel (technically, XLOPERs can contain 12 possible data types – if you are curious, here is some documentation on MSDN). Currently, several of the data types (i.e. the one that can be used to communicate a reference to and from Excel) are not big enough to support the dimensions of the bigger grid size in Excel 12.
今天,当我们在构建XLL文件的时候,开发人员可以使用一种称之为“XLOPER”的专用数据类型(译者注:XLOPER是OPER 结构的增强版本。在Microsoft Excel 4.0及更高版本中,可以使用这种数据类型来编写调用Microsoft Excel函数的DLL和代码资源,使用XLOPER 结构,DLL函数除了可以传递数据外,还可以传递对工作表的引用并实现流控制)。这是一种基础数据结构,它允许开发人员在应用程序和Excel之间传递或返回诸如引用、数组及错误信息等数据(从技术上来讲,XLOPER能够包含12种可能的数据类型,如果你还想知道更多的话,请点击这里参阅MSDN上的相关资讯)。目前,这其中有一部分数据类型(比如其中一个用来与工作表引用区域交互通信的数据类型)尚不够大,不足以支持Excel 12增大的表格维度(译者注:关于Excel 12工作表的大小及其它方面限制的变更,请参阅Kevin翻译的《大片上映...》)。
To address this, Excel 12 will implement a new XLOPER – which will be called something like XLOPER12 – which will have a larger reference (xltypeRef) data type and a larger array (xltypeMulti) data type which will support the entire big grid. In addition, XLOPER12 will support Unicode data and therefore strings larger than 255 characters. One happy by-product of the support for more characters is that XLLs written using XLOPER12 will be able to support 255 arguments, the same limit supported by Excel 12.
有鉴于此,Excel 12将执行一套全新的XLOPER方案 – 我们暂且称之为XLOPER12。新方案将拥有一个更大的引用(xltypeRef)数据类型及一个更大的数组(xltypeMulti) 数据类型,以支持整个增大的工作表。另外,XLOPER12也将支持Unicode数据并因此能够支持长度超过255个字符的字符串数据,这项改进还带来另一个让人高兴的副产品,那就是使用XLOPER12开发的XLL能够支持多达255个参数,这与Excel 12能够支持的上限是一致的。
The Excel12 function
Excel12 函数
In order to use XLOPER12, developers will need to use a new C API function – Excel12 – instead of the existing Excel4 function. Excel12 is essentially the same function updated to handle the new XLOPER12, so if developers want to take advantage of any of the changes described above, they will need to update their code to call the new API. Note that existing code will continue to run as it always has, so developers will not face no backwards compatibility problems.
要使用XLOPER12的数据结构,开发人员必须使用一个新的C API函数-Excel12-来代替现有的Excel4。Excel12函数本质上讲与Excel4是一样的,升级的目的是为了操作XLOPER12,因此,开发人员如果想要获得上述任何变更所带来的优势,就必须更新其代码以调用新的API函数。当然,现有代码能够一如继往地运行,开发人员不需要面对向后兼容的问题。
Updating XLL’s to take advantage of multi-threaded calculation
更新XLL以利用多线程的计算
As discussed in a previous post, Excel 12 will support multi-threaded calculation. Since performance is very important for the bulk of XLL authors, we wanted to give developers who write UDFs using XLLs a way to allow their XLLs to participate in multi-threaded calculation (meaning Excel would calc multiple UDFs at once thereby improving calculation times).
就像上一个帖子中讨论的那样,Excel12将会支持多线程计算。由于对大多数XLL开发者而言,产品性能是至关重要的,因此,我们应该给那些使用XLL编写用户自定义函数(UDFs)的开发人员们一个参与多线程计算的途径,这就意味着Excel将能够同时计算多个用户自定义函数(UDFs),亦即提高了计算次数。
To do so, XLL authors need to do two things. First, (the harder part) they need to make sure their XLL UDF (the code they wrote) is threadsafe (i.e. it must not make any non-thread-safe callbacks into Excel). Second, they need to make a minor update to their XLL to tell Excel 12 it is threadsafe. This is done in pretty much the same way that an XLL author would tell Excel that their function is volatile – by adding a special character to the “type text” entry in an XLL’s function table (the type text entry defines the data types for the functions’ return value and arguments).
要达成这一目标,XLL的开发人员需要做两件事情:*9件事,也是最困难的一件,开发人员必须确保他们的代码是线程安全的,也就是说,代码不得造成任何导致Excel发生非线程安全的回调行为。第二件事,开发人员必须对他们的XLL代码作一些小的更新,以便告诉Excel 12这些代码是线程安全的。这一点,与XLL的开发人员通过为XLL函数表中的 “类型说明”入口点(用于定义函数返回值及参数的数据类型)添加某些特殊的字符,以此告诉Excel程序这些是易失性函数的作法,是非常相似的。
Specifically, to indicate that an XLL function is safe for multi-threaded calculation, an XLL author needs to add a "$" to the type text entry in an XLL’s function table ... so the type text entry for a UDF that had one argument would look like this “ RR$”. If this character is present, Excel will allow the UDF to participate in muti-threaded calc, just like Excel’s intrinsic functions; if the flag is absent, the reverse is true – all calls to that UDF will be run on a single thread. Note, the Excel4 API will also respond appropriately to the “$” character, so if an XLL author wants to take advantage of multi-threading, but doesn't care about the big grid, they do not have to use the Excel12 API.
更确切地说,要明示一个XLL函数对于多线程计算是安全的话,XLL的开发人员必须为XLL函数表中的类型说明入口点添加一个“$”符号...如此,带有一个参数的用户自定义函数的类型说明入口点看起来就象这样“ RR$”。如果这个字符有提交,Excel将允许用户自定义函数参与多线程计算,就象是Excel的内置函数一样;如果这个标志缺失的话,那么情况就相反-所有对用户自定义函数的调用都将只能进行单线程计算。值得关注的是,Excel4 API函数同样会对这个“$”符号作出适当的响应,因此,XLL的开发人员如果不想顾及Excel 12增大的表格,而又想利用多线程计算的话,他们不一定非得使用Excel12 API。
扫一扫微信,学习实务技巧
版权声明:本条内容自发布之日起,有效期为一个月。凡本网站注明“来源高顿教育”或“来源高顿网校”或“来源高顿”的所有作品,均为本网站合法拥有版权的作品,未经本网站授权,任何媒体、网站、个人不得转载、链接、转帖或以其他方式使用。
经本网站合法授权的,应在授权范围内使用,且使用时必须注明“来源高顿教育”或“来源高顿网校”或“来源高顿”,并不得对作品中出现的“高顿”字样进行删减、替换等。违反上述声明者,本网站将依法追究其法律责任。
本网站的部分资料转载自互联网,均尽力标明作者和出处。本网站转载的目的在于传递更多信息,并不意味着赞同其观点或证实其描述,本网站不对其真实性负责。
如您认为本网站刊载作品涉及版权等问题,请与本网站联系(邮箱fawu@gaodun.com,电话:021-31587497),本网站核实确认后会尽快予以处理。
严选名师 全流程服务
其他人还搜了
热门推荐
-
学好会计电算化的4个小技巧 2022-01-04
-
会计新手必备:金蝶财会软件使用技巧 2018-07-06
-
会计实用工具:数字大写转换(数字大写) 2017-01-19
-
最实用的会计工具:数字大写转换 2016-08-18
-
会计人必须掌握的50个常用工具 2016-08-03
-
99%的会计需要用到的30个万能公式! 2016-08-03
-
财会工作必备EXCEL 技巧,一看就知道! 2016-08-03
-
国内会计科目的词汇:成本类科目 2016-06-27
-
不同用途财政资金安排,三种税务方案巧选择 2016-06-21
-
纳税人、增值税专用发票领购簿变更程序 2016-06-17
-
填写现金支票的有哪些具体的步骤与方法 2016-06-16
-
教你学会建账流程 2016-06-15
-
UFO报表的有哪几个状态 2016-06-15
-
用友U8出纳管理步骤 2016-06-15
-
运输方式常用表达 2016-06-07
-
运输方式常用表达 2016-06-07
-
工资、薪金所得税率表 2016-06-02
-
关税复合税率表 2016-06-02
-
企业所得税税率表 2016-06-01
-
契税的税率 2016-06-01
-
企业发票专用章事宜如何办理 2016-06-01
-
辅导期纳税人取得的发票何时抵扣 2016-06-01
-
土地使用费标准 2016-05-31
-
支票填写的注意事项 2016-05-27
-
跨境人民币可以怎么用 2016-05-18
-
50套会计工作者常用公式 2016-05-18
-
人民币大写金额转换工具 2016-04-27
-
股份制企业经常会用到的会计公式 2016-03-02
-
如何从会计报表中发现税收风险 2016-02-14
-
"三证合一"后,企业注销有涉税疑点咋办? 2016-02-14