在d中创建Excel加载项

2021-03-15 12:40:37

“D是一种具有静态键入,系统级访问和C样语法的通用编程语言。使用D编程语言,写快速,读取快速,快速播放“(D网站)

D通常是一种我看到的语言,但它不是我过于熟悉的语言。我相信我第一次登陆网站上它没有在开源许可下发表,这是我的交易破碎机。自从变得更加开放,近年来已被合并为GCC。出于这个原因,我觉得它值得另一种外观。

而不是将代码包装在我用Rust示例所做的那样的Excel-DNA加载项中,而不是称为Excel-D的Excel SDK周围的D包装器。还存在一个名为Autowrap的工具,也可以将D代码包装为Python,Excel和C#,因此也可以采取Excel-DNA方法。在这篇文章中,我将使用完全本地方法。

标准D构建工具称为DUB。我们可以使用它来创建我们的项目并构建XLL。

$ Dub Init ExceldPackage配方格式(SDL / JSON)[JSON]:SDLNAME [Exceld]:描述[最小的D应用程序。]:作者姓名[]:许可证[专有]:版权串[版权所有┬®2020,]:添加依赖关系(留空以跳过)[]:Excel-Dadding依赖性Excel-D〜> 0.5.8ADD依赖(假到跳过跳过)[]:成功创建了一个空的项目' exceld'成功创建了一个空项目在exceld创建

导入XLLD; @register(ArgumentText("要添加&#34的数组;"在阵列&#34中添加所有单元格,"添加阵列中的所有单元格") ,ArgumentHelp(["阵列添加"]))Double Funcaddeverything(Double [] [] args)NothRow @nogc {import std。算法:折叠;导入STD。数学:isnan; Double Ret = 0; foreach(行; args)ret + =行。折叠!((a,b)=> b。isnan?0.0:a + b)(0.0);返回Ret; }

姓名" exceld"描述"最小的D应用。"作者""版权所有"版权所有©2020,"许可证"专有"依赖关系" Excel-D"版本="〜> 0.5.7" targettype"动态线轴" dflags" -dip25" " -dip1000"配置" xll" {PrebuildCommands" Dub Run -C Def --Nodeps -Q - exceld.def" sourcefiles" exceld.def" #必须具有适当的32/64位Excel SDK XLCall32。 lib在app#的路径#不幸的是他们'重新称为xlcall32。 lib libs" xlcall32" PostBuildCommands"复制/ y exceld.dll exceld.xll"配置" justxll" {sourcefiles" exceld.def" #必须具有适当的32/64位Excel SDK XLCall32。 lib在app#的路径#不幸的是他们'重新称为xlcall32。 lib libs" xlcall32" PostBuildCommands"复制/ y exceld.dll exceld.xll" } //这构建了一个二进制文件,它写出了必要的.def文件//以导出函数配置" def" {targettype"可执行文件" targetname" write_def"版本" Excelddef" }

最后,从Excel SDK安装中复制所需的XLCALL32.LIB文件(可以从Microsoft下载)并运行Build命令: $ dub build - arch = x86_mscoff#32位$ dub build - arch = x86_64#64位 这应该在顶级目录中创建一个“exceld.xll”文件。 如果我们打开Excel中的加载项(explorer.exe exceld.xll可以在命令行上使用),我们可以在电子表格中使用该函数。 考虑到我从未在没有太多麻烦的情况下获得简单的UDF和跑步之前从未写过任何D. 如果您希望创建自定义UDFS,则Excel-D似乎是一个非常好的选择,但目前它无法支持UI扩展。 此外,初学级别文件缺乏所以最好的方法来了解更多方法是通过读取Excel-D repo中的代码。