转自:http://blog.csdn.net/li494816491/article/details/50274305

1. QAxObject *_excelObject1 =newQAxObject("Excel.Application");

2. QAxObject *workbooks = _excelObject1->querySubObject("WorkBooks");

3. QAxObject *workbook = workbooks->querySubObject("Open(constQString&)",QDir::toNativeSeparators(QDir::currentPath() +"./1.xls"));

4. QAxObject *sheet=workbook->querySubObject("Sheets(int)",1);

5. QAxObject* cell = sheet->querySubObject("Cells(int,int)", 1, 4);

6. cell->dynamicCall("SetValue(const QString&)", "str");

7. book->dynamicCall("SaveAs(QString)",fileName.replace("/","\\"));

8. book->dynamicCall("Close(Boolean)", false);

9. _excelObject1->dynamicCall("Quit(void)");

10. delete cell;delete sheet; delete workbook;delete workbooks; delete _excelObject1;

但是这么搞效率太低了,写10000行30列数据就需要11分钟。

后来发现主要的时间都是在和excel的控件交互方面。于是在减少和excel空间的交互方面找解决办法。

查了VBA的手册,发现有range这个方法于是可以使用,另外在Qt中找到

SAFEARRAY(VARIANT) QList<QVariant> const QList<QVariant>& QList<QVariant>&

可以使用QList<QVaiant>代替VBA中的数组。于是上面的cell可以用range代替一行一行的写

1. QAxObject *range = worksheet->querySubObject("Range(QString)", "A1:AF1");

2. range->setProperty("Value", aline);//aline 是一个QList<QVaiant>变量

    效果很明显,一行行的写之后,只需要20s就能完成10000行30列的数据写入了。

    既然可以一行一行的写,那么也可以使用vba的二维数组写。下面的写法效率更高,速度更快。

1.QList<QVariant> a1,a2, a3;

2. QVariant b1(a1), b2(a2), b3(a3);

3. QList<QVariant> c;

4. QVariant d(c);

5.  QAxObject *range = sheet->querySubObject("Range(QString)", "A1:C3");


6. range->setProperty("Value", d);

[转]Qt 5.5 操作 Excel 的速度 效率问题的更多相关文章

  1. Qt QAxObject操作excel文件过程总结(转):

    正好同事问道Qt下操作excel. 转自:http://blog.csdn.net/a156392343/article/details/48092515 配制方面: 1.确保Excel软件在本地服务 ...

  2. Qt之操作Excel

    Visual Basic for Applications(VBA)是一种Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件. ...

  3. qt 操作excel表格

     自己编写的一个Qt C++类,用于操作excel表格,在Qt中操作excel需在.pro中增加CONFIG+=qaxcontainer配置. 1.打开Excel:objExcel = new QAx ...

  4. Qt 下快速读写Excel指南(尘中远)

    Qt Windows 下快速读写Excel指南 很多人搜如何读写excel都会看到用QAxObject来进行操作,很多人试了之后都会发现一个问题,就是慢,非常缓慢!因此很多人得出结论是QAxObjec ...

  5. C# 操作 Excel 常见问题收集和整理(定期更新,欢迎交流)

    经常会有项目需要把表格导出为 Excel 文件,或者是导入一份 Excel 来操作,那么如何在 C# 中操作 Excel 文件成了一个最基本的问题. 做开发这几年来,陆陆续续也接触过这样的需求,但因为 ...

  6. Python操作Excel——win32com模块和xlrd+xlwt+xlutils组合

    今天,接到一个任务,要生成大约两百个excel文件,从2006年到2013年,每个月两个文件,这些文件中除了几个关于日期的单元格不同外,其他数据都相同,所以就想到可以用python写一个小脚本,自动生 ...

  7. 转-C# 操作 Excel 常见问题收集和整理

    经常会有项目需要把表格导出为 Excel 文件,或者是导入一份 Excel 来操作,那么如何在 C# 中操作 Excel 文件成了一个最基本的问题. 做开发这几年来,陆陆续续也接触过这样的需求,但因为 ...

  8. 在 VS2008 下操作 Excel 的方法总结

      这些天做个软件,需要读取 Excel 并导入到数据库中,所以研究了一下在 VC 下操作 Excel 的方法,这里做个总结,以作备忘. 一.最常用的 OLE 自动化方式 这个方式应该说是功能最全的方 ...

  9. C# 操作 Excel 常见问题收集和整理

    C# 操作 Excel 常见问题收集和整理(定期更新,欢迎交流) 经常会有项目需要把表格导出为 Excel 文件,或者是导入一份 Excel 来操作,那么如何在 C# 中操作 Excel 文件成了一个 ...

随机推荐

  1. 子集枚举好题UVA1354

    题目 分析:枚举子集以及关于该子集的补集,然后用子集去暴力构造一颗二叉树,注意左边的最远距离不一定来自于左子树,右边的最远距离也不一定来自于右子树 #include "iostream&qu ...

  2. 生产环境下搭建mongodb复制集高可用环境(python)

    环境描述:有三台ubuntu服务器,,每台服务器上已经有mongodb实例.创建3个mongo2.4的新实例,分别作为三个复制集节点,同时保证了当前单节点环境的稳定 3台服务器都已经有单个mongo实 ...

  3. 分享几篇文章(PDF版)

    后天就要回老家了,除了团团年估计也没有其他好玩的,就琢磨下点经典文章带回去看看. Google一番找到了老赵很早以前的文章: http://www.cnblogs.com/JeffreyZhao/ar ...

  4. COCOS2DX场景切换特效

    cocos2d-x 3.0中场景切换特效比较多,而且游戏开发中也经常需要用到这些特效,来使场景切换时不至于那么干巴,遂这里汇总一下,开发中使用. 百牛信息技术bainiu.ltd整理发布于博客园 场景 ...

  5. C++经典面试题库 附带参考答案

    1.    面向对象的程序设计思想是什么? 答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象. 2.    什么是类? 答:把一些具有共性的对象归类后形成一个集合,也就是所谓的类. 3.  ...

  6. 875. Koko Eating Bananas

    Koko loves to eat bananas.  There are N piles of bananas, the i-th pile has piles[i] bananas.  The g ...

  7. Codeforces645B【树状数组求逆序数】

    题意: 给你1-n的序列,然后有k次机会的操作,每一次你可以选择两个数交换. 求一个最大的逆序数. 思路: 感觉就是最后一个和第一个交换,然后往中间逼近,到最终的序列,用树状数组求一下逆序数. #in ...

  8. C# 中==和Equal的区别

    http://new-fighter.iteye.com/blog/1634800 今天突然看到一种情况,颠覆了我对这比较使用方法的判断. 于是开始在网上找资料,但几乎都是Java的,好不容易找到一个 ...

  9. CF788B Weird journey

    总共有n个节点,m条路径,要求其中m-2条路径走两遍,剩下2条路径仅走一遍,问不同的路径总数有多少,如果仅走一遍的两条边不同则将这两条路径视为不同. 可以把每条边都拆成两条重边,每条边的度数都是偶数了 ...

  10. js对象注册清除

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...