ad

Excel2007新知:轻车绕便道,题外不言他 #3 Excel在XLL方面所做-英雄云拓展知识分享

匿名投稿 238 2024-01-14

译者:Rowen  来源:其他
发表于:2006年7月7日

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文件呢?)开发人员这样做的缘由有很多,其中一个最重要的缘由就是为了提高履行效力。

Excel2007新知:轻车绕便道,题外不言他 #3 Excel在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的相干利用作了3个方面的变更,主要目的是为了方便开发人员访问新的函数。透过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的开发人员需要做两件事情:第一件事,也是最困难的一件,开发人员必须确保他们的代码是线程可靠的,也就是说,代码不得造成任何致使Excel产生非线程可靠的回调行动。第2件事,开发人员必须对他们的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。

Published Tuesday, January 03, 2006 2:48 PM by David Gainer

注:本文翻译自其他 ,原文作者为David Gainer(a Microsoft employee)。

附注:关于XLL加载宏的开发
1. 如何在C++语言环境中开发XLL加载宏,请参阅:
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q178474
2. 在Visual Studio 2005 中开发XLL加载宏,请参阅
http://blogs.msdn.com/eric_carter/archive/2004/12/01/273127.aspx


选择英雄云云表单=选择更智能的Excel

在现代企业管理中,数据的高效管理和处理至关重要。随着信息技术的不断发展,英雄云云表单已经成为了提高数据录入、管理和分析效率的不可或缺的工具。让我们来深入探讨英雄云-云表单的几大优势。

基础字段:多样性满足业务需求

英雄云云表单中包括了各种基础字段,如单行文本多行文本数字输入框单选框复选框下拉框下拉复选框日期时间分割线等。这些字段的多样性使用户可以根据具体的业务需求,轻松进行文本、数据和时间信息的录入或修改。例如,您可以使用单行文本字段录入员工姓名、产品型号等,或者使用下拉框进行多选,根据不同情况选择更加方便的字段类型。

高级字段:提升工作效率

英雄云云表单提供了高级字段,如地址图片附件手写签名手机子表关联数据关联查询以及流水号。这些高级字段在基础字段的基础上升级,可帮助用户完成一些琐碎的工作。例如,使用地址字段可以避免逐字打字,而流水号字段可以自动生成规律性的编号,非常适用于合同编号生成等场景。

部门成员字段:精确管理与通讯录的关联

英雄云的部门成员字段允许企业对各个部门的成员进行精确管理。用户可以通过部门成员字段获取通讯录中的部门成员信息,应用于记录报销人、报销部门等场景。这些成员字段还细分为成员单选成员多选,可根据具体需求在通讯录中选择一个或多个成员。

聚合表:数据处理更智能

英雄云聚合表功能用于对已存在的表单数据进行聚合计算,从而得到一张聚合表,后续其他表单可调用聚合表进行数据联动、关联查询和关联数据等操作完成数据处理。这一功能可应用于多种场景,如进销存管理、财务管理和门店零售管理等,帮助企业完成数据处理,提高工作效率。

表单权限设置:灵活管理数据访问

英雄云的表单权限设置允许用户根据企业的具体需求管理表单的访问和操作权限。用户可以根据系统权限或自定义权限对不同成员或团队进行权限设置,以确保数据的安全和合规性。这一功能使企业能够根据变化的业务需求和团队结构,实时调整权限设置。

自定义打印模板:文档输出更便捷

英雄云云表单支持自定义打印模板,可将表单数据转换为可打印的Word文档。用户可以根据自己的需求进行排版和编辑,将产品规格说明书等文档轻松生成。这一功能提供了一种标准化的文档输出方式,简化了信息整理的过程。

综合来看,选择英雄云云表单意味着选择更智能、更灵活、更高效的数据管理工具。无论是提高工作效率,精确管理数据,还是实现数据处理,英雄云云表单都能满足您的多样化需求,助力您的业务发展。

如果您正在寻找一款强大的云表单工具,不妨考虑英雄云,它将为您带来更多的便捷和智能,助您事半功倍。


免责声明:

本网址(www.yingxiongyun.com)发布的材料主要源于独立创作和网友匿名投稿。此处提供的所有信息仅供参考之用。我们致力于提供准确且可信的信息,但不对材料的完整性或真实性作出任何保证。用户应自行验证相关信息的正确性,并对其决策承担全部责任。对于由于信息的错误、不准确或遗漏所造成的任何损失,本网址不承担任何法律责任。本网站所展示的所有内容,如文字、图像、标志、音频、视频、软件和程序等的版权均属于原创作者。如果任何组织或个人认为网站内容可能侵犯其知识产权,或包含不准确之处,请即刻联系我们进行相应处理。

上一篇:表哥表姐们,避免在职场中被降维打击,你必须了解的新武器-英雄云拓展知识分享
下一篇:Excel2007新知:有关图表的一些释疑-英雄云拓展知识分享
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×