通过虚表接口使用Excel
Using Excel through vtable interface
我正在通过c++学习COM编程。据我所知,在双接口的客户端,您有两个选择:
- 获取IDispatch接口,使用GetIDsOfNames查询disids,并使用Invoke访问方法和属性。
- 在项目中包含带有接口定义的。h头文件和带有由MIDL创建的guid的。c源文件,并直接通过vtable调用函数,vtable是编译器从。h文件中知道的。
我想从c++程序创建一个相当复杂的Excel工作簿(我坚持使用c++而不是c#或其他任何东西)。使用1。这样我就能写出一个正确运行的程序。然而,我有两个问题:(A)代码是相当笨拙的,因为调用调用,(B)它是相当快,但我希望它更快。
所以我想试试2。道路我只是缺少。h和。c文件,因为与我读过的书中的示例不同,这些文件不是由另一个示例项目创建的,而是由Microsoft创建的。
我的问题是:
- 我在哪里可以找到这些文件?
- 我希望从方法2中得到多少性能改进?与方法1相比。
我建议不要这样做。而且,我有我的理由……
对于简单的事情,仅仅运行excel.exe并将数据从一个进程封送到另一个进程就占用了大部分时间。这些东西比使用c++接口可能获得的好处要大得多。
然而,最大的原因是:有时Office不能在客户端机器上正确安装或注册…不管出于什么原因。有时会发生接口没有正确注册的情况。如果接口没有正确注册,您将会绞尽脑汁地想弄清楚程序失败的原因。最终你会明白的。然后你唯一的办法就是告诉你的客户重新安装Office,希望它能正确安装,或者创建一个.reg文件,让客户应用reg文件来修复接口,如果他有管理员权限,你知道哪些是丢失的接口。
如果你使用IDispatch,接口是否丢失并不重要。我在使用Word的过程中吸取了惨痛的教训。你已经让它工作了…
如果你坚持的话,你可以试试:
#import "progid:Excel.Sheet" // plus a bunch of other options like rename() etc...
相关文章:
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- Visual C++GC接口如何启用它以及要包含哪个库
- Windows.h与GLFW.h的接口
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 提供与TMP和SFINAE的通用接口
- 为重写std::exception的库生成swig接口时出错
- 内联如何影响模块接口中的成员函数
- COM 接口 c# 封送数组数组
- 如何在 SCIP C++ 接口中获取 MILP 约束矩阵中的系数值
- 重载 -> shared_ptr 个实例中的箭头运算符<interface>,接口中没有纯虚拟析构函数
- 如何绑定 C++ gRPC 客户端的网络接口
- 模板化接口 - 创建一个泛型模板类以返回任何容器
- 如何从实现接口的模板化类实例访问结构
- 带有进度表的 curl 多接口程序
- 设计帮助 - 为不同类型的消息处理通用接口的设计模式
- 我可以在具有一个标头和一个接口的 cpp 文件中有多个嵌入吗?
- 类接口,可以创建N个方法
- 类具有相同的接口,但参数的类型不同
- 如何与 Cheerp/js 中的 extern 变量接口?
- 通过虚表接口使用Excel