при попытке открыть файл * .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.
Я нашел решение давно, извините, что не обновлялся.
Вся проблема была из-за плагина Foxit Pro. Я отключил его в офисе MS, и все работало нормально.
Постскриптум проблема может быть в любом приложении MS Office, обязательно отключите его перед использованием COM API.
Других решений пока нет …