C++在获取Excel2016的时候出错,但是Excel2013没有问题。

wangqi_ouki 2017-04-12 01:40:00
我这里有一个C++的代码,如下,Excel2013调用没有问题,但是,在Excel2016下面的代码就会出错。说什么无效。。

excel.CreateInstance("Excel.Application");
DoEvents();

if(atoi((const char *)excel->Version) >= 12) {
ChangeExtensions(files, xlsFiles);
ChangeExtensions(bookNames, xlsBookNames);
for(unsigned int i = 0; i < files.size(); i++)
{
if(!SaveAsXls(files[i], xlsFiles[i]))
{
DeleteTempFiles(files);
DeleteTempFiles(xlsFiles);
return false;
}
}
}

...全文
252 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hoohya 2019-03-09
  • 打赏
  • 举报
回复
是不是这个原因?看看那个打勾的回答

https://social.msdn.microsoft.com/Forums/en-US/f8dab437-2bf7-4d27-a550-a5acca7d425b/inserting-a-userform-causes-access-violation-in-fm20dll?forum=isvvba
赵4老师 2017-04-13
  • 打赏
  • 举报
回复
引用 7 楼 wangqi_ouki 的回复:
谢谢您的回复,我刚才有尝试了下,把Office2016装在了Win8.1的系统中,居然好用了,但是在Win10中就不行。
安装时请关闭UAC、防火墙、杀毒软件、…… 以管理员身份运行setup.exe
wangqi_ouki 2017-04-12
  • 打赏
  • 举报
回复
谢谢您的回复,我刚才有尝试了下,把Office2016装在了Win8.1的系统中,居然好用了,但是在Win10中就不行。
赵4老师 2017-04-12
  • 打赏
  • 举报
回复
或者将你的代码在纯Excel2016 32/64位环境下重新生成。
赵4老师 2017-04-12
  • 打赏
  • 举报
回复
没准你需要打Office2016 SP补丁。
wangqi_ouki 2017-04-12
  • 打赏
  • 举报
回复
谢谢您的回答,我并没有混用,实在不同的虚拟机中分别装Excel2016的32版本和Excel2016的64版本,但是这两个虚拟机的操作系统时Win10+64bit,好用的Excel2013又是在别的虚拟机当中,操作系统时Win8.1+64bit,目前的状况就是,只有装了Excel2013的这个可以访问上面的代码,并且能够生成excel,但是,Excel2016的两个虚拟机都不行。
赵4老师 2017-04-12
  • 打赏
  • 举报
回复
引用 2 楼 wangqi_ouki 的回复:
谢谢您的回答,但是,我用Excel2016的64位版本,和Excel2016的32版本,都进行测试过,都不能调用。 这个是又是什么原因呢。
64位和32位不能混用。 有条件的话,将Excel2013/6的32/64位都安装上,再试。
wangqi_ouki 2017-04-12
  • 打赏
  • 举报
回复
谢谢您的回答,但是,我用Excel2016的64位版本,和Excel2016的32版本,都进行测试过,都不能调用。 这个是又是什么原因呢。
赵4老师 2017-04-12
  • 打赏
  • 举报
回复
在64位Windows下: 64位exe和dll在目录c:\windows\system32目录下; 32位exe和dll在目录c:\windows\syswow64目录下; 所以要注意: 在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。 且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll 在win64位系统下设置32位程序使用的数据库别名要用c:\windows\syswow64\cliconfg.exe 在win64位系统下设置32位程序使用的系统DSN要用c:\windows\syswow64\odbcad32.exe 64 位 Windows 平台注意点之文件系统重定向 http://www.cnblogs.com/jiake/p/4981555.html 64 位 Windows 平台注意点之注册表重定向 http://www.cnblogs.com/jiake/p/4956218.html
因文件超过20M不能上传,所以拆分为两个文件分次上传 第1章 COM背景知识 1.1 COM的起源 1.1.1 软件业面临的挑战 1.1.2 传统解决方案 1.1.3 面向对象程序设计方法 1.1.4 最终解决方案:组件软件 1.1.5 面向对象的组件模型——COM 1.2 COM的发展历程 1.2.1 COM以前的对象技术:DDE、OLE 1、VBX控件 1.2.2 COM首次亮相:OLE2 1.2.3 Microsoft拥抱Internet:ActiveX 1.2.4 更多的新名词:Windows DNA和COM+ 1.2.5 远程对象:ORBs和DCOM 1.2.6 COM的最新版本:COM+ 1.3 COM技术现状 1.3.1 COM与CORBA 1.3.2 COM与Enterprise Java Beans 1.3.3 Windows之外的COM 小结 第2章 从C++到COM 2.1 C++客户重用C++对象——例程DB 2.1.1 C++对象 2.1.2 客户程序 2.2 将C++对象移进DLL中——例程DB_cppdll 2.2.1 成员函数的引出 2.2.2 内存分配 2.2.3 Unicode/ASCII兼容 2.2.4 例程实现 2.2.4.1 修改接口文件 2.2.4.2 修改对象程序 2.2.4.3 修改客户程序 2.3 C++对象使用抽象基类——例程DB_vtbl 2.3.1 问题:私有数据成员被暴露 2.3.2 解决方案:抽象基类 2.3.2.1 什么是抽象基类(Abstract Base Class) 2.3.2.2 实现秘诀:虚函数(Virtual Functions) 2.3.3 使用抽象基类 2.3.4 例程实现 2.3.4.1 修改接口文件 2.3.4.2 修改对象程序 2.3.4.3 修改客户程序 2.4 改由COM库装载C++对象——例程dbalmostcom 2.4.1 COM库 2.4.2 对象创建的标准入口点 2.4.3 标准对象创建API 2.4.4 标准对象注册 2.4.5 例程实现 2.4.5.1 修改接口文件 2.4.5.2 修改对象程序 2.4.5.3 修改客户程序 2.5 将C++对象变成COM对象 2.5.1 引用计数 2.5.2 多接口 2.5.3 IUnknown接口 2.5.4 标准类厂接口:IClassFactory 2.5.5 对象代码的动态卸载 2.5.6 自动注册 2.5.7 例程实现 2.5.7.1 修改接口文件 2.5.7.2 修改对象程序 2.5.7.3 修改客户程序 2.6 为COM对象添加多接口支持 2.6.1 多接口 2.6.2 DEFINE_GUID 2.6.3 例程实现 2.6.3.1 修改接口文件 2.6.3.2 修改对象程序 2.6.3.3 修改客户程序 小结 第3章 COM基础知识 3.1 对象与接口 3.1.1 COM对象 3.1.2 COM接口 3.1.3 IUnknown接口 3.1.3.1 生存期控制:AddRef和Release 3.1.3.2 接口查询:QueryInterface 3.1.4 全球唯一标识符GUID 3.1.5 COM接口定义 3.1.6 接口描述语言IDL 3.2 COM应用模型 3.2.1 客户/服务器模型 3.2.2 进程内组件 3.2.3 进程外组件 3.2.4 COM库 3.2.5 HRESULT返回值 3.2.6 COM与注册表 3.3 COM组件 3.3.1 实现类厂对象 3.3.2 类厂对象的创建 3.3.3 实现自动注册 3.3.4 实现自动卸载 3.4 COM客户 3.4.1 COM对象创建函数 3.4.1.1 CoGetClassObject 3.4.1.2 CoCreateInstance 3.4.1.3 CoCreateInstanceEx 3.4.2 如何调用进程内组件 3.4.3 COM客户调用进程外组件 3.5 进一步认识COM 3.5.1 可重用机制:包容和聚合 3.5.2 进程透明性 3.5.3 安全性机制 小结 第4章 COM扩展技术 4.1 可连接对象机制 4.1.1 客户、接收器与可连接对象 4.1.1.1 接收器 4.1.1.2 可连接对象 4.1.1.3 客户 4.1.2 实现可连接对象 4.1.3 实现接收器 4.1.4 建立接收器与连接点的连接 4.1.5 获得出接口的类型信息 4.2 结构化存储 4.2.1 什么叫结构化存储和复合文件 4.2.2 存储对象和IStorage接口 4.2.2.1 IStorage接口 4.2.2.2 获得IStorage指针 4.2.2.3 释放STATSTG内存 4.2.2.4 枚举存储对象中的元
补丁下载(1.15M): http://u.115.com/file/f8f8e7d9fa# Ver2.45.407 重大功能完善: 1.当计算公式出错导致生成报表失败,退出调用AC Report的程序时发生内存错误。 2.含有子报表且子报表的列数大于主报表,不能导出到Excel问题。 3.和Skin皮肤控件冲突的问题(主要是导出Excel后报错)。 4.进一步完善导出Excel的算法,将多个页面格式迥异的报表导出在一个Sheet上时,改进了算法,使得在Excel中所需列的数量和宽度计算精确度更高,真正做到无失真导出,容错性更好,对于任何复杂的报表,都可以正确导出 Ver2.45主要变动 1.修正了独立子报表(未嵌入到所属页面的子报表)预览后退出程序时,发生内存泄漏的bug。 2.图片单元格支持在公式中设置URL链接地址。 3.Cell()函数空值处理。 4.界面修改。 5.修正VCL控件和demo编译出错问题 ACReport简介 Anycell Report(简称AC Report)是一款中国式报表组件,是国内最早的基于表格,支持图文混排、公式和脚本的中国式报表工具之一。就如Anycell Report的名称那样,灵活强大的表格功能一直是AC Report区别于其它软件或控件最显著的特征之一,AC Report 表格取消了传统表格概念中“列”的概念,每一行上的单元格数量可以不等,且可以自由活动,勿须上下对齐,在制作复杂的中国式报表时可以避免很多不必要的合并拆分操作,制作表格更加方便和随心所欲,并且省时省力。AC Report单元格支持多种丰富的形态,例如格式化文本、图片、图表、条码、OLE容器等。 AC Report的一些基本特点: 1.独具特色的表格,风格与Word表格相似,但可以做出比Word或Excel更灵活的表格来。 2. 功能全面、专业的中国式报表设计器,中国用户更易于学习和接受。 3.支持多种单元格样式,可以打印图像、图表(直方图、折线图等)、Rich文本、 条形码、中式财务帐薄、支持在报表中嵌入Word、Excel文档等。 4. 强大的计算和合计功能。内置表达式解析系统和函数库。 5. 可扩充性,可以在应用程序中给报表引擎扩充函数库、报表样式和单元格样式。 6.支持多种报表样式,如清单式、分组、交叉表、以及子报表等。 7. 支持多栏式报表。 8. 和应用程序完美结合,支持windows下所有的开发工具和程序语言(例如Delphi、C++、VB、PB、.NET、易语言),最终用户在设计器里可直接选择打印字段,生成表达式,报表设计器用户容易学习理解。 9. 支持脚本和窗体编程,报表设计人员可以编写脚本、在报表设计器里为报表添加窗体,为最终用户提供更丰富的交互功能。 10. 既可以使用应用程序中的数据集,也支持在报表中直接连接各种数据库,通过SQL直接获得报表需要的数据。 11.无失真导出为Excel、Word、Html格式的文档
Anycell Report(简称AC Report)是一款中国式报表组件,是国内最早的基于表格,支持图文混排、公式和脚本的中国式报表工具之一。就如Anycell Report的名称那样,灵活强大的表格功能一直是AC Report区别于其它软件或控件最显著的特征之一,AC Report 表格取消了传统表格概念中“列”的概念,每一行上的单元格数量可以不等,且可以自由活动,调整某行上单元格的宽度时,不影响其它行中的单元格。在制作复杂的中国式报表时可以避免很多不必要的合并拆分操作,制作表格更加方便和随心所欲,并且省时省力。AC Report单元格支持多种丰富的形态,例如格式化文本、图片、图表、条码、OLE容器等。   AC Report的一些基本特点:   1.独具特色的表格,风格与Word表格相似,但可以做出比Word或Excel更灵活的表格来。   2. 功能全面、专业的中国式报表设计器,中国用户更易于学习和接受。   3.支持多种单元格样式,可以打印图像、图表(直方图、折线图等)、Rich文本、条形码、中式财务帐薄、支持在报表中嵌入Word、Excel文档等。   4. 强大的计算和合计功能。内置表达式解析系统和函数库。   5. 可扩充性,可以在应用程序中给报表引擎扩充函数库、报表样式和单元格样式。   6.支持多种报表样式,如清单式、分组、交叉表、以及子报表等。   7. 支持多栏式报表。   8. 和应用程序完美结合,支持windows下所有的开发工具和程序语言(例如Delphi、C++、VB、PB、.NET、易语言),最终用户在设计器里可直接选择打印字段,生成表达式,报表设计器用户容易学习理解。   9. 支持脚本和窗体编程,报表设计人员可以编写脚本、在报表设计器里为报表添加窗体,为最终用户提供更丰富的交互功能。   10. 既可以使用应用程序中的数据集,也支持在报表中直接连接各种数据库,通过SQL直接获得报表需要的数据。   11.无失真导出为Excel、Word、Html格式的文档。   Ver2.45.008 bug修正:   1.当计算公式出错导致生成报表失败,退出调用AC Report的程序时发生内存错误。   2.含有子报表且子报表的列数大于主报表,不能导出到Excel问题。   3.和Skin皮肤控件冲突的问题(主要是导出Excel后报错)。   Ver2.45主要变动1.修正了独立子报表(未嵌入到所属页面的子报表)预览后退出程序时,发生内存泄漏的bug。   2.图片单元格支持在公式中设置URL链接地址。   3.导出Excel功能改进。   4.Cell()函数空值处理。   5.界面修改。   6.修正VCL控件和demo编译出错问题。   Ver 2.4 主要变动:   1.可拖动对象功能增强(现在AC不仅可以支持强大的表格功能,也可以使用AC Report 像传统的报表工具例如FastReport或水晶报表那样设计报表了)。   2.在新建页面时,增加了“数据模块”类型,用来存放报表中的数据控件,更方便模板的管理。   3.对话框(Form)功能增强。   4.支持双面打印。   5.其它:   财务帐薄支持套打。   单元格支持批量拖动。   设计器界面优化。   相关bug修正。   新功能相关的Demo。   Ver2.45主要变动:   1.修正了独立子报表内存泄漏的bug。   2.图片单元格支持在公式中设置URL链接地址。   3.导出Excel功能改进。   4.Cell()函数空值处理。   5.界面修改。   6.修正VCL控件和demo编译出错问题。   安装包中含使用和开发接口文档,及Delphi、VB、VC++、C#.net、VB.net和WEB下的demo。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧