用Qt调用EXCEL文件时会通过下面两个函数中的其中的一个来实现
1. mWorkBooks->querySubObject("Open(const QString &)", fileName)
2.mWorkBooks->dynamicCall("Open(const QString &)", fileName)
上面两个函数都可以打开EXCEL文件,其中参数 “fileName“ 直接使用相对路径时(比如 ./test.xlsx)就会出现下面的错误:
QAxBase: Error calling IDispatch member Open: Exception thrown by server
Code : -2146827284
Source : Microsoft Excel
Description: ??????? ./test.xlsx????????????????
Help : xlmain11.chm
Connect to the exception(int,QString,QString,QString) signal to catch this exception
解决方案(2种):
1.将相对路径直接改为绝对路径。
2.或者通过QFileInfo类来实现相对路径变为绝对路径,如下:
QString fileName = "./test.xlsx";
QFileInfo info(fileName);
if (!info.exists())
return;
mWorkBook = mWorkBooks->querySubObject("Open(const QString &)", info.absoluteFilePath());
总结:出现上面错误原因主要是路径错误引起来的。文件不存在,路径名称输入错误,后缀错误等等,只要是找不到相应路径的文件就会出现上面错误。可能会有个疑问,相对路径对应是文件是存在的啊,为什么找不到呢,因为这个相对路径相对的并不是我们程序工程的路径,而是EXCEL的路径,所以不能直接用相对路径。