VS+qt---Excel、word读写操作

该文详细展示了使用Qt的QAxObject进行UI交互,实现对Excel和Word的读写功能。具体包括:通过槽函数触发Excel的写入(将lineEdit数据写入单元格)和读出(读取指定范围数据到lineEdit_2),以及Word文档的写入(将lineEdit_3内容输入文档)和读出(读取文档内容到lineEdit_4)操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、UI设计。

2、四个按钮的槽函数实现如下:
(1)Excel写入槽函数:

void WandE::on_pushButton()//Excel写入
{
	//创建一个Excel应用程序进程
	QAxObject *myexcel = new QAxObject("Excel.Application");

	//隐藏不显示文档窗体
	myexcel->dynamicCall("SetVisible(bool Visible)", "false");
	//屏蔽文档的警告消息框
	myexcel->setProperty("DisplayAlerts", false); 

	//获取工作薄集
	QAxObject *myworks = myexcel->querySubObject("WorkBooks");  
	//添加工作薄
	myworks->dynamicCall("Add");                     
	//获取当前活动工作薄
	QAxObject *mywork = myexcel->querySubObject("ActiveWorkBook"); 
	//获取电子表格集
	QAxObject *mysheets = mywork->querySubObject("Sheets");

	//添加一个表
	mysheets->dynamicCall("Add"); 
	//指向当前的活动表格
	QAxObject *sheet = mywork->querySubObject("ActiveSheet");
	//给表格命名
	sheet->setProperty("Name", "表格1号");       
	//指向C3单元格
	QAxObject *cell = sheet->querySubObject("Range (QVariant, QVariant) ", "C3"); 
	
	//从lineEdit控件获得数据
	QString  inStr = ui.lineEdit->text();    
	//向单元格写入内容
	cell->dynamicCall("SetValue(const QVariant&)", QVariant(inStr)); 

	mywork->dynamicCall("SaveAs(const QString&) ", QDir::toNativeSeparators("F:/work/we.xls"));
	mywork->dynamicCall("Close()"); //关闭
	myexcel->dynamicCall("Quit()");  //退出
}

(2)Excel读出槽函数:

void WandE::on_pushButton_2()//Excel读出
{
	QAxObject *myexcel = new QAxObject("Excel.Application");
	QAxObject *myworks = myexcel->querySubObject("WorkBooks");
	//QAxObject *mywork = myexcel->querySubObject("ActiveWorkBook");
	
	//打开文件
	//QAxObject *mywork = myworks->querySubObject("Open(QString, QVariant)", QDir::currentPath() + "/IMEI.xls"); 
	QAxObject *mywork = myworks->querySubObject("Open(QString, QVariant)", QString("F:/work/work1.xlsx"));

	//访问第一个工作表
	QAxObject * mysheet = mywork->querySubObject("WorkSheets(int)", 1); 
	QString Range = "A1:B2";
	//读取范围
	QAxObject *allEnvData = mysheet->querySubObject("Range(QString)", Range); 
	QVariant allEnvDataQVariant = allEnvData->property("Value");
	QVariantList allEnvDataList = allEnvDataQVariant.toList();
	QVariantList allEnvDataList_i = allEnvDataList[0].toList();
	QString data11 = allEnvDataList_i[0].toString(); //第i行第0列的数据
	QString data12 = allEnvDataList_i[1].toString();
	data11 = data11 + data12;

	ui.lineEdit_2->setText(data11);

	mywork->dynamicCall("Close()");
	myexcel->dynamicCall("Quit()");
}

(3) word写入槽函数:

void WandE::on_pushButton_3()//word写入
{
	QAxObject *myword = new QAxObject("Word.Application");
	myword->setProperty("Visible", false);
	QAxObject *mydocs=myword->querySubObject("Documents");
	mydocs->dynamicCall("Add(void)");
	QAxObject *mydoc = myword->querySubObject("ActiveDocument");

	QString str = ui.lineEdit_3->text();
	QAxObject *selection = myword->querySubObject("Selection");
	selection->dynamicCall("TypeText(const QString&)", str);

	mydoc->dynamicCall("SaveAs(const QString&) ", "F:/work/word1.doc");

	mydoc->dynamicCall("Close()");
	myword->dynamicCall("Quit()");
	delete myword;
}

(4) word读出槽函数实现:

void WandE::on_pushButton_4()//word读出
{
	QAxObject *myword = new QAxObject("Word.Application");
	myword->setProperty("Visible", false);
	QAxObject *mydocs = myword->querySubObject("Documents");
	mydocs->dynamicCall("Open(const QVariant&)", "F:/work/word2.doc");
	QAxObject *mydoc = myword->querySubObject("ActiveDocument");

	QAxObject *selection = mydoc->querySubObject("Range()");
	//然后获取选中的word文档内容
	QString str = selection->property("Text").toString();

	ui.lineEdit_4->setText(str);

	mydoc->dynamicCall("Close()");
	myword->dynamicCall("Quit()");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值