qt读取excel的速度优化问题

问题遇到的现象和发生背景

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();

你的代码写出来是一行,其实后台处理了大量的数据
要把文件整个按照二进制先读进内存里
然后循环处理字节,装进对应的数据结构里
这个过程就是会慢
尤其你文件特别大的时候
而且你直接调用excel的类库,后台其实调用的是office的com组件
如果你实在觉得com组件慢,你换NPOI试试

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632