转自: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. 关闭ext4文件系统的日志功能

    最近在帮一个研究生弄一个虚拟化环境下的基于Innodb的日志文件的读写优化的实验,实验的具体详细内容就不说了,其中有一个步骤需要将MySQL的日志文件放置在一块单独的硬盘里面,这块硬盘要么是ext2, ...

  2. 网易短信接口集成 nodejs 版

    /* name:网易短信服务集成nodejs版: author:zeq time:20180607 test: // checkValidCode('157****6954','284561').th ...

  3. 「ZJOI2008」「LuoguP2590」树的统计(树链剖分

    题目描述 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w. 我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u ...

  4. MySQL数据库学习----理论基础

    一:数据存储发展过程 1. 人工管理阶段 主要存储在纸带.磁带等介质中,手工记录,效率低下. 2. 文件系统阶段 存储在计算机磁盘中,以文件形式出现,数据管理变得简单,但是数据没有结构化处理,不易于查 ...

  5. 初学者遇到的PostgreSQL字符集问题的解决

    当初学者在使用PostgreSQL数据库,输入中文时,会遇到“ERROR:  invalid byte sequence for encoding "UTF8": 0xd6d0”的 ...

  6. git只clone仓库中指定子目录

    基于sparse clone变通方法 [root@vm_test backup]# mkdir devops[root@vm_test backup]# cd devops/[root@vm_test ...

  7. GetSafeHwnd()

    CreateCompatibleBitmap The CreateCompatibleBitmap function creates a bitmap compatible with the devi ...

  8. 利用pyinstaller生成exe文件碰到的一些问题及解决方法

    在“开源图像标注工具labelme的安装使用及汉化”这篇博客中,使用pyinstaller将labelme项目的入口python文件main.py打包,生成了main.exe文件,可以在Windows ...

  9. Centos7.2下安装redis&通用键值命令

    Centos7.2下安装redis&通用键值命令 Centos7.2下安装redis 官方网站:https://redis.io/ 1.进入/usr/local/src/目录 cd /usr/ ...

  10. oj判题WA/RE怎么办

    [转]POJ WA/RE指南   “POJ上头的题都是数学题”,也不知道是那个家伙胡诌的……但是POJ的要求就是算法通过了也不让你AC.下面本人就这560题的经验,浅谈一下WA/RE了怎么办. 以下内 ...