Qt批量操作Excel

在面临大量数据(几十万条)导出到Excel的挑战时,原有的逐个单元格写入方式导致效率低下(5000行数据耗时约5分钟)。通过采用批量写入的方法,显著提升了导出速度,将程序从频繁的线程切换中解放出来,实现Qt环境下高效处理Excel文件。
摘要由CSDN通过智能技术生成

最近在做一个项目,客户要求把查询到的数据导出Excel,而网上大部分资料描述的都很局限、很简单。

由于要导出的数据量很大(QTableView中大约有几十万条数据),一开始我是找到一个单元格就写入一个值,但这样的话程序就会把大量的时间花费在线程切换中,导致效率太低(5000行数据大概需要5分钟)。

最后找到了一种方法,即为对Excel进行批量写入值操作,下面是我程序中导出excel部分的源码:

<span style="white-space:pre">	</span>QString strContent;
	QAxObject *range;
	QList<QVariant> mLstData;
	QList<QString> mLstCurData;
	int nColumns = 0;
	QString strMergeCell;
	int nIndex = 0, nTotal = 0;		// 记录数据个数
	QStringList strListParaName;
	QMap<int,PidInfoStruct> mapPidInfo;

	//建立Excel对象
	HRESULT r = OleInitialize(0);<span style="white-space:pre">		</span>//由于我把导出数据的操作放在了一个新线程中,所以在调用activeX之前要初始化com组件
	if (r != S_OK && r != S_FALSE) {
		qWarning("Qt: Could not initialize OLE (error %x)", (unsigned int)r);
	}
	QAxObject *excel 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值