In meinem Projekt versuche ich eine Excel-Datei zu lesen. Aber seltsame Dinge sind passiert. Wenn ich Excel sichtbar öffne, wird es korrekt ausgeführt. Wenn ich es unsichtbar mache, wird es meine Datei nicht öffnen.Eine seltsame Lesung Excel-Fehler mit Qt
Qt Version: qt-Open-Source-windows-x86-msvc2015_64-5.7.0
Windows-Version: 64-Bit-Win-10
Fehlerinformationen in Console:
QAxBase: Fehler IDispatch Mitglied Open Aufruf:
Der Code Unbekannter Fehler Excel-Datei zu lesen:
QAxObject *excel = NULL;
QAxObject *workbooks = NULL;
QAxObject *workbook = NULL;
excel = new QAxObject("Excel.Application");
excel->dynamicCall("SetVisible(bool)", false);
// The code to set invisible, project will work correctly when set visible true
workbooks = excel->querySubObject("WorkBooks");
if(!workbooks){
QMessageBox msgBox;
msgBox.setWindowTitle("error information");
msgBox.setText("workbooks error");
msgBox.exec();
return;
}
workbook = workbooks->querySubObject("Open(const QString&, QVariant)", file->filePath, 0);
//This code will not execute correctly, causing "workbook error"
if(!workbook){
QMessageBox msgBox;
msgBox.setWindowTitle("error information");
msgBox.setText("workbook error");
msgBox.exec();
return;
}
QAxObject * worksheet = workbook->querySubObject("WorkSheets(int)", 1);
QAxObject * usedrange = worksheet->querySubObject("UsedRange");
QAxObject * rows = usedrange->querySubObject("Rows");
QAxObject * columns = usedrange->querySubObject("Columns");
int intRowStart = usedrange->property("Row").toInt();
int intColStart = usedrange->property("Column").toInt();
int intCols = columns->property("Count").toInt();
int intRows = rows->property("Count").toInt();
workbook->dynamicCall("Close (Boolean)", false);
delete excel;
Während dieses Code-Snippet willkommen ist und einige Hilfe bieten kann, wäre es [stark verbessert, wenn es eine Erklärung enthielt] (// meta.stackexchange.com/q/114762) von * wie * und * warum * dies löst das Problem. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, nicht nur die Person, die jetzt fragt! Bitte [bearbeiten] Sie Ihre Antwort, um eine Erläuterung hinzuzufügen und geben Sie an, welche Einschränkungen und Annahmen gelten. –