Qt5编程——excel操作

方法一:
	//创建QODBC数据库(excel文件)
	QSqlDatabase db = QSqlDatabase::addDatabase("QODBC","excelexport");
	QString dsn = QString("DRIVER={Microsoft Excel Driver (*.xls)};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"test.xls\";DBQ=test.xls");
	db.setDatabaseName(dsn);
	db.open();

	QSqlQuery query(db);
	QString sSql;
	bool state;
	QString sheetName = "Sheet1";
	//删除表
	sSql = QString("drop table %1").arg(sheetName);
	if (!query.exec(sSql))
	{
		qDebug() << "drop table failed!";
	}

	//创建表(sheet in excel)
	sSql = QString("create table %1").arg(sheetName);
	sSql += "(Q1 real, Q2 real, Q3 real, Q4 real, Q5 real, Q6 real, Q7 real, Q8 real, Q9 real, Q10 real, Q11 real, Q12 real)";
	if (!query.exec(sSql))
	{
		qDebug() << "create table failed!";
	}

	//插入数据,一行一行的插入
	sSql = QString("insert into %1 ").arg(sheetName);
	sSql += "(Q1, Q2, Q3,  Q4, Q5, Q6, Q7, Q8, Q9, Q10, Q11, Q12) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
	state = query.prepare(sSql);
	for (int i = 0; i < QINDEX[0].size(); i++)
	{
		for (int j = 0; j < 12; j++)
		{
			query.addBindValue(QINDEX[j][i]);
		}
		if (!query.exec())
		{
			qDebug() << "insert failed!";
		}
	}
	db.close();//关闭excel

方法二:

	QAxObject excel("Excel.Application");
	excel.setProperty("Visible", false);
	QAxObject *work_books = excel.querySubObject("WorkBooks");
	work_books->dynamicCall("Add(void)");
	QAxObject *workbook = excel.querySubObject("ActiveWorkBook");//获取当前工作簿  
	QAxObject *worksheets = workbook->querySubObject("Sheets");//获取工作表集合
	QAxObject *worksheet = worksheets->querySubObject("Item(int)", 1);//获取工作表集合的工作表1,即sheet1

	for (int i = 0; i < 12; i++)
	{
		int count = QINDEX[i].size();
		for (int j = 0; j < QINDEX[i].size(); j++)
		{
			QAxObject *cellnum;
			QString num = (QChar)('A' + i) + QString::number(j + 1);
			cellnum = worksheet->querySubObject("Range(QVariant, QVariant)", num);//获取单元格 
			cellnum->dynamicCall("SetValue(const QVariant&)", QVariant(QINDEX[i][j]));
		}
	}

	workbook->dynamicCall("SaveAs(const QString&)", QString("./test.xlsx"));  
	workbook->dynamicCall("Close()");//关闭工作簿  
	excel.dynamicCall("Quit()");//关闭excel


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值