问题标签 [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.
c++ - 在 C++ 中使用 Scripting.FileSystemObject 时,#import 之后的下一步是什么?
上下文:Windows 7、XLW 5.x、Microsoft Excel 2007、Visual Studio 2010、C++
鉴于以下代码...
我现在如何实例化 FileSystemObject 并调用它的方法?
python-2.7 - 读取目录中的多个excel文件并将特定单元格值写入另一个excel表
我需要从目录中存在的 100 个 excel 工作簿中读取特定的单元格值,并将该数据写入单独的 excel 表中的列。这是我所做的,它产生了错误:
任何人都可以帮助成功地做到这一点吗?
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 个的函数呢?
注意:请不要说显而易见的事情。我知道问题的真正症结在哪里。目前无法进行重构。
c++ - 如何在 VBA 中声明一个接受 XlfOper (LPXLOPER) 类型参数的函数?
我在上一个问题的答案中发现了一种无需注册即可调用 (C++) xll 中定义的函数的方法。我之前使用的是 XLW 提供的注册基础结构,我使用 XlfOper 类型在 VBA 和 xll 之间传递参数。
c++ 函数是这样的:
按照我之前的解决方案的答案,我直接声明了函数,如下所示:
通过附加到 excel 进程,我可以看到正在调用该函数,但我在参数中收到垃圾或空数据。我想,这是因为我没有告诉 VBA 如何转换为正确的数据类型。
如何正确调用 XlfOper 参数?我认为调用 LPXLOPER 应该可以完成这项工作,因为 xlw 声明如下:
重要的是不要向此类添加任何数据成员或虚函数。xlw 的设计依赖于 XlfOper 类具有与 LPXLOPER/LPXLOPER12 相同的大小这一事实,该假设允许从 Excel 接收的那些类型的值被库解释为 XlfOper 的实例。
c++ - 在 c++ 中由 xlw 创建的 xll 加载项中使用 boost
我正在尝试在我使用 c++ 中的 xlw 创建的 xll 加载项中使用 boost 函数。我已将 boost 目录包含在 XLL 属性页 --> 配置页 --> VC++ 目录的包含目录部分中。
但是,当我尝试使用 boost 对象“boost::”时,没有出现任何成员函数,并且在屏幕的左下角我收到一条消息“IntelliSense:'Unavailable for C++/CLI'”
有没有人遇到过这个问题并且知道如何解决它?
在此先感谢您的帮助
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 {
...如果有人知道问题的根源,请告诉我!
谢谢
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
定义typedef
在mycontainers.h
:
因此,它不可能被翻译成能够管理字符串的容器:只是加倍。尽管在他书中xlw
与Joshi相关的章节中说......
[...] 该类
MyArray
也通过typedef
in定义MyContainers.h
。默认为typedef
tostd::vector
。它必须具有.size()
一个构造函数,该构造函数采用大小并已operator[]
定义。
...添加是不够的
既不mycontainers.h
是我项目的任何头文件,也不是我的项目的任何头文件。
问题
- 如何
std::map< std::string, int>
通过从 Excel 读取一系列字符串来填充它? - 如何
typedef
根据我想要的类型/类定义新容器,以管理来自 Excel 的所有可能输入?
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:
谢谢
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。
c++ - XLW - 编译的 XLL“文件格式和扩展名不匹配”
我正在使用XLW 5
构建Excel
XLL
插件,并正在尝试EchoShort
模板示例。Template.xll
我使用 GNU成功编译Make
,g++
版本 4.9.2 (mingw-w64) 在cygwin
. 但是,在尝试打开时XLL
,Excel 2013
报告错误:
我继续打开它,它似乎充满了不可读的字符。我尝试xll
使用开发人员选项卡下的加载项管理器添加,但是当我尝试调用EchoShort
单元格时,出现#NAME
错误。
我是新手XLW
,如果我能让它工作,这似乎是一个令人难以置信的包。任何帮助深表感谢。
编辑:应该提到它在cygwin
编辑:也尝试使用 VS2013,并且发生了同样的事情,所以它不是cygwin
nor MinGW
。