问题遇到的现象和发生背景
qt使用QAxObject读取excel,以下几步消耗时间过长,第一步1600 ms,第二步3348ms,第三步700ms。如果去掉第二步 excel->dynamicCall,则第三步消耗时间为3900ms。网上分享的快速读取方法大多从读取数据处入手,但是经过测试发现打开excel才是消耗时间最长之处,希望得到一种快速读取的方法。
问题相关代码,请勿粘贴截图
timer.start();
QAxObject *excel = new QAxObject("Excel.Application");//excel应用程序
qDebug()<<"加载excel0"<<timer.elapsed()<<"ms";timer.restart();
excel->dynamicCall("SetVisible(bool)", false); //true 表示操作文件时可见,false表示为不可见
qDebug()<<"加载excel1"<<timer.elapsed()<<"ms";timer.restart();
QAxObject *workbooks = excel->querySubObject("WorkBooks");//所有excel文件
QAxObject *workbook = workbooks->querySubObject("Open(const QString&)", strSheetName);//按照路径获取文件
QAxObject * worksheets = workbook->querySubObject("WorkSheets");//获取文件的所有sheet页
if (workbooks == NULL || worksheets->isNull()){qDebug()<<"打开文件为空";return;}
qDebug()<<"加载excel2"<<timer.elapsed()<<"ms";timer.restart();