如果 Excel.Application 不可见,activeQt 无法打开 *.xls
activeQt fails to open *.xls if the Excel.Application is not visible
尝试使用 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: Error calling IDispatch member Open: Unknown error
The program has unexpectedly finished.
我在网上搜索了一下,发现如果 excel
的 属性 Visible
设置为 true
,一切都会顺利进行,没有错误。
有趣的是我必须在打开文件之前设置这个 属性 否则程序会崩溃。但是,如果我在打开文件后将其设置为 true
,excel 应用程序将正确显示(向我显示文件中的数据)但程序会崩溃。
我正在寻找真正的解决方案,或者问题的原因。我不希望 excel
随时对用户可见。
所以让它可见然后不可见对我来说不是一个令人满意的解决方案
p.s。同样的代码曾经在我的笔记本电脑上 100% 正确地工作了整整一个月,然后它开始崩溃了。在我的工作场所,他们在电脑上遇到了同样的问题,所以我的同事过去常常 运行 他的应用程序在我的电脑上检查它们是否工作。这是一个坏习惯,因为我们不知道用户的情况
我正在使用 Qt 5.8.0、MS Office 2016 和 MS Office 2012。
很久以前就找到了解决方案,抱歉没有更新。
整个问题都是因为 Foxit Pro 插件。我在 MS Office 中停用了它,一切正常。
P.S。问题可能出在任何 MS Office 应用程序中,确保在使用 COM api.
之前将其关闭
尝试使用 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: Error calling IDispatch member Open: Unknown error
The program has unexpectedly finished.
我在网上搜索了一下,发现如果 excel
的 属性 Visible
设置为 true
,一切都会顺利进行,没有错误。
有趣的是我必须在打开文件之前设置这个 属性 否则程序会崩溃。但是,如果我在打开文件后将其设置为 true
,excel 应用程序将正确显示(向我显示文件中的数据)但程序会崩溃。
我正在寻找真正的解决方案,或者问题的原因。我不希望 excel
随时对用户可见。
所以让它可见然后不可见对我来说不是一个令人满意的解决方案
p.s。同样的代码曾经在我的笔记本电脑上 100% 正确地工作了整整一个月,然后它开始崩溃了。在我的工作场所,他们在电脑上遇到了同样的问题,所以我的同事过去常常 运行 他的应用程序在我的电脑上检查它们是否工作。这是一个坏习惯,因为我们不知道用户的情况
我正在使用 Qt 5.8.0、MS Office 2016 和 MS Office 2012。
很久以前就找到了解决方案,抱歉没有更新。
整个问题都是因为 Foxit Pro 插件。我在 MS Office 中停用了它,一切正常。
P.S。问题可能出在任何 MS Office 应用程序中,确保在使用 COM api.
之前将其关闭