尝试使用activeQt和代码打开* .xls文件时:
QAxObject *excel = new QAxObject("Excel.Application", this);
QAxObject *workbooks = excel->querySubObject("Workbooks");
QAxObject *workbook = workbooks->querySubObject("Open(const QString&)", "c:\\somefile.xls");
QAxObject *worksheets = workbook->querySubObject("Worksheets");
QAxObject *worksheet = worksheets->querySubObject("Item(int)", 1);
我收到错误:
QAxBase:调用IDispatch成员时出错打开:未知错误
该程序意外结束。
我在网上搜索过,发现如果excel
将Visible
属性设置为true
,那么一切都会顺利进行,没有任何错误。
有趣的是,我必须在打开文件之前设置此属性,否则程序会粉碎。但是,如果我在打开文件后将其设置为true
,则excel应用程序将正确显示(显示文件中的数据),但程序会崩溃。
我正在寻找一个真正的解决方案,或问题的原因。我不希望任何时候用户都可以看到excel
。
所以让它可见而不可见对我来说不是一个令人满意的解决方案
P.S。相同的代码用于在我的笔记本电脑上正常工作一整个月,然后它开始粉碎。在我的工作场所,他们在电脑上遇到同样的问题,所以我的同事曾经在我的电脑上运行他的应用程序来检查它们是否有效。这是一个坏习惯,因为我们不知道用户的情况
我正在使用Qt 5.8.0,MS office 2016和MS office 2012。
答案 0 :(得分:1)
我很久以前找到了解决方案,抱歉没有更新。
整个问题是因为Foxit Pro插件。我在MS办公室停用了它,一切正常。
P.S。问题可能出在任何MS office应用程序中,请确保使用COM api将其关闭。