问题标签 [xlw]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
333 浏览

c++ - 在 C++ 中使用 Scripting.FileSystemObject 时,#import 之后的下一步是什么?

上下文:Windows 7、XLW 5.x、Microsoft Excel 2007、Visual Studio 2010、C++

鉴于以下代码...

我现在如何实例化 FileSystemObject 并调用它的方法?

0 投票
1 回答
5997 浏览

python-2.7 - 读取目录中的多个excel文件并将特定单元格值写入另一个excel表

我需要从目录中存在的 100 个 excel 工作簿中读取特定的单元格值,并将该数据写入单独的 excel 表中的列。这是我所做的,它产生了错误:

任何人都可以帮助成功地做到这一点吗?

0 投票
1 回答
1250 浏览

c++ - 如何从无法注册到函数向导的 xll 加载项调用函数?

我有一个 xll (一个相当复杂的 c++ 项目)导出一个函数,由于历史原因,该函数需要大量参数,并且恰好是20

这是一个神奇的数字:显然在 Excel 2003 中最多有 30 个参数(“在 Microsoft Office Excel 2003 中,任何函数可以采用的最大参数数量是 30,尽管大多数都少于这个。”),但是超过 20 功能无法注册在功能向导中注册。

现在,正如你可能猜到的那样,我被要求再添加3 个参数。好的,所以参数计数上升到 23(至少,这个函数不是为“人类消费”而设计的,而是总是由 VBA 包装器调用)。

通过使用 VC++ 调试器附加到 Excel 进程,我在注册时收到错误代码 4,它代表xlretInvCount

我已确保逗号分隔的参数名称字符串短于 255 个字符。顺便说一句,我正在使用 xlw 4(我知道旧版本)。

所以,如果限制是 30,我希望能够通过调用我的函数

但不要使用向导。麻烦的是VBA告诉我该函数没有注册。

那么,如何正确使用参数超过 20 个且少于 30 个的函数呢?

注意:请不要说显而易见的事情。我知道问题的真正症结在哪里。目前无法进行重构。

0 投票
1 回答
916 浏览

c++ - 如何在 VBA 中声明一个接受 XlfOper (LPXLOPER) 类型参数的函数?

我在上一个问题的答案中发现了一种无需注册即可调用 (C++) xll 中定义的函数的方法。我之前使用的是 XLW 提供的注册基础结构,我使用 XlfOper 类型在 VBA 和 xll 之间传递参数。

c++ 函数是这样的:

按照我之前的解决方案的答案,我直接声明了函数,如下所示:

通过附加到 excel 进程,我可以看到正在调用该函数,但我在参数中收到垃圾或空数据。我想,这是因为我没有告诉 VBA 如何转换为正确的数据类型。

如何正确调用 XlfOper 参数?我认为调用 LPXLOPER 应该可以完成这项工作,因为 xlw 声明如下:

重要的是不要向此类添加任何数据成员或虚函数。xlw 的设计依赖于 XlfOper 类具有与 LPXLOPER/LPXLOPER12 相同的大小这一事实,该假设允许从 Excel 接收的那些类型的值被库解释为 XlfOper 的实例。

0 投票
1 回答
129 浏览

c++ - 在 c++ 中由 xlw 创建的 xll 加载项中使用 boost

我正在尝试在我使用 c++ 中的 xlw 创建的 xll 加载项中使用 boost 函数。我已将 boost 目录包含在 XLL 属性页 --> 配置页 --> VC++ 目录的包含目录部分中。

但是,当我尝试使用 boost 对象“boost::”时,没有出现任何成员函数,并且在屏幕的左下角我收到一条消息“IntelliSense:'Unavailable for C++/CLI'”

有没有人遇到过这个问题并且知道如何解决它?

在此先感谢您的帮助

0 投票
0 回答
455 浏览

lnk2019 - 错误 LNK2019 和致命错误 LNK1120

我在编译我的项目时遇到了一个问题。当我设置这一行时:

boost::shared_ptr mySwap;

我没有问题,但是当我设置这个时:

boost::shared_ptr mySwap(new OvernightVsLiborBasisSwap(OvernightVsLiborBasisSwap::PayerOvernight, 1.0, scheduleOis, indexOis, dayCountOis, 1.0, scheduleLibor, indexLibor, dayCountLibor));

我有以下错误消息

excelFunctions.obj:错误 LNK2019:未解析的外部符号“公共:__thiscall ModLibNY::OvernightVsLiborBasisSwap::OvernightVsLiborBasisSwap(enum ModLibNY::OvernightVsLiborBasisSwap::Type,double,class QuantLib::Schedule const &,class boost::shared_ptr const &,class QuantLib::DayCounter const &,double,class QuantLib::Schedule const &,class boost::shared_ptr const &,class QuantLib::DayCounter const &,double,double,bool,bool,class boost::optional,class boost: :optional)" (??0OvernightVsLiborBasisSwap@ModLibNY@@QAE@W4Type@01@NABVSchedule@QuantLib@@ABV?$shared_ptr@VOvernightIndex@QuantLib@@@boost@@ABVDayCounter@4@N1ABV?$shared_ptr@VIborIndex@QuantLib@ @@6@3NN_N5V?$optional@W4BusinessDayConvention@QuantLib@@@6@6@Z) 在函数 "class xlw::NCMatrix __cdecl getOisLiborSwapCurve(class xlw::CellMatrix const &,class xlw::CellMatrix const &,class xlw::CellMatrix const &,class xlw::CellMatrix const &,double const &)" (?getOisLiborSwapCurve@@YA?AVNCMatrix@xlw@@ABVCellMatrix@2@000ABN @Z) 3>.\Debug\ExplainPnL.xll : 致命错误 LNK1120: 1 unresolved externals

对象 OvernightVsLiborBasisSwap 是我自己制作的静态库 ModLibNY 的一部分,其中包含。我的代码的第一行包含:

非常奇怪的是,当我使用构造函数时出现错误。有关信息,它在 .hpp 文件中声明为

并在 .cpp 文件中定义:

命名空间 ModLibNY {

...如果有人知道问题的根源,请告诉我!

谢谢

0 投票
1 回答
336 浏览

c++ - xlw:如何使用新的 typedef 从 Excel 单元格中获取 std::string(并可能填充 std::map)

介绍

我指的是xlw,Mark Joshi 和其他人的 Excel C API 包装器。

在开始我的示例、我的试验和我的问题之前,关于如何重现这些代码的几句话:xlw从其网站下载并安装后,您应该找到一个名为 的文件夹XLL_Project,其内容是 Visual Studio 解决方案 (" Template.sln ") 如果在安装过程中选择了这个 IDE/平台;此解决方案由 a cppinterface.h(即定义最终 .xll 中应存在哪些函数)的头文件和source.cpp指定所述函数应如何运行的 a 组成。

代码

让一个像下面这样的接口函数是 incppinterface.h并且它的行为是 in source.cpp


如您所见,尝试std::map< std::string, int >使用xlw类填充 a MyArray:在 Excel 电子表格中people可能是一系列字符串,因此 C++ 代码应该看到类似 a 的内容std::vector< std::string >,因此它应该使用它来填充myMap适当的std::pair< std::string, int >.

但是,这不会建立。

主要问题是MyArray定义typedefmycontainers.h

因此,它不可能被翻译成能够管理字符串的容器:只是加倍。尽管在他书中xlw与Joshi相关的章节中说......

[...] 该类MyArray也通过typedefin定义MyContainers.h。默认为typedefto std::vector。它必须具有.size()一个构造函数,该构造函数采用大小并已operator[]定义。

...添加是不够的

既不mycontainers.h是我项目的任何头文件,也不是我的项目的任何头文件。

问题

  1. 如何std::map< std::string, int>通过从 Excel 读取一系列字符串来填充它?
  2. 如何 typedef根据我想要的类型/类定义新容器,以管理来自 Excel 的所有可能输入?
0 投票
0 回答
272 浏览

c++ - XLL 和 VBA:找不到 DLL 入口点 Myfunc

我有一个 c++ 库,我正在使用 xlw 创建可在 Excel 中使用的函数。到目前为止,我刚刚发布了 xlw 解决方案,并将 xll 文件放到了 excel 表上,我可以得到我的 C++ 函数。使用 VBA,我使用 Application.run 没有任何问题......直到我决定通过引用使用输入。Application.run 似乎没有处理这个问题。因此,我尝试在 VBA 中声明该函数:

但我收到错误消息:Can't find DLL entry point myFunction in C:\temp\XLL_Project\Release\Template.xll

虽然我可以在 Excel 中使用 Template.xll 函数。

至于 xll 生成器,我使用的是 Xlw 提供的默认库,我只是修改了 cppinterface.h 文件以及 source.cpp 文件用于实现

cppinterface.h:

谢谢

0 投票
0 回答
504 浏览

c++ - XLL 和 EXCEL:拖动或加载

我在将 XLL 加载到 Excel 时遇到问题。我使用 XLW 生成我的 XLL ,并使用 Excel 2007。当我将文件拖到电子表格上时,我可以使用我的所有 Xll 函数,并且效果很好。但是,当我使用 Excel-Add in 加载它时,文件已加载,但我的任何功能都不存在。

我在 Excel 2010 上尝试过同样的事情,但情况更糟。当我将 XLL 文件拖到我的电子表格中时,XLL 被打开,因为它是一个文本文件,我无法像在 Excel 2007 中那样让它工作,我可以使用 Excel-Addin 加载它,但我无法获得任何我的XLL 函数。

你知道是什么问题吗?

编辑:我按照以下视频中的步骤操作: https ://www.youtube.com/watch?v=_mpw5_JW7T4

编辑 2:在 Excel 2007 中,当我将 xll 拖到电子表格时,它可以工作,但加载项部分中缺少 dll。

0 投票
1 回答
3116 浏览

c++ - XLW - 编译的 XLL“文件格式和扩展名不匹配”

我正在使用XLW 5构建Excel XLL插件,并正在尝试EchoShort模板示例。Template.xll我使用 GNU成功编译Makeg++版本 4.9.2 (mingw-w64) 在cygwin. 但是,在尝试打开时XLLExcel 2013报告错误:

我继续打开它,它似乎充满了不可读的字符。我尝试xll使用开发人员选项卡下的加载项管理器添加,但是当我尝试调用EchoShort单元格时,出现#NAME错误。

我是新手XLW,如果我能让它工作,这似乎是一个令人难以置信的包。任何帮助深表感谢。

编辑:应该提到它在cygwin

编辑:也尝试使用 VS2013,并且发生了同样的事情,所以它不是cygwinnor MinGW