activeQt не может открыть * .xls, если приложение Excel.Application не отображается

при попытке открыть файл * .xls, используя activeQt и код:

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. Open: неизвестная ошибка.

Программа неожиданно завершилась.

Я искал в Интернете и обнаружил, что если excel имеет свойство Visible установлен в trueвсе будет работать без ошибок.
Самое смешное, что мне нужно установить это свойство перед открытием файла, иначе программа сломается. Однако, если я установлю его на true После открытия файла приложение Excel будет отображаться правильно (показывая мне данные в файле), но программа сломается.

Я ищу реальное решение или причину проблемы. Я не хочу excel быть видимым для пользователя в любое время.

поэтому сделать его видимым, а затем невидимым не является удовлетворительным решением для меня

постскриптум тот же самый код работал на моем ноутбуке в течение целого месяца на 100% правильно, а затем начал давить. У меня на рабочем месте такая же проблема на компьютере, поэтому мой коллега запускал свои приложения на моем компьютере, чтобы проверить, работают ли они. это плохая привычка, так как мы не знаем, какова будет ситуация для пользователя

Я использую Qt 5.8.0, MS Office 2016 и MS Office 2012.

0

Решение

Я нашел решение давно, извините, что не обновлялся.

Вся проблема была из-за плагина Foxit Pro. Я отключил его в офисе MS, и все работало нормально.

Постскриптум проблема может быть в любом приложении MS Office, обязательно отключите его перед использованием COM API.

0

Другие решения

Других решений пока нет …