私のプロジェクトでは、Excelファイルを読み込もうとしています。しかし、奇妙なことが起こった。私がオープンすると目に見えて優れた性能を発揮します。私はそれを非表示に設定しても、私のファイルは開かれません。Qtで奇妙な読み込みエラーが発生する
Qtのバージョン:QT-オープンソースのWindows-x86ベースmsvc2015_64-5.7.0
Windowsのバージョン:コンソールで64ビット勝つ-10
エラー情報:
QAxBase: IDispatchのメンバーオープンの呼び出しエラー:
01:不明なエラー
コードは、Excelファイルを読み取ります
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;
このコードスニペットは歓迎されていますが、いくつかの助けを与えるかもしれませんが、* how *と* why * thisの[説明があれば大幅に改善されます](// meta.stackexchange.com/q/114762)問題を解決します。あなたが今質問している人だけでなく、将来読者のための質問に答えていることを忘れないでください!説明を追加するためにあなたの答えを[編集]し、どんな制限と前提が適用されるかを示してください。 –