使用QAxObject类必须在pro中加入axcontainer模块。
#include <QAxObject>加入头文件
就可以使使用此类的接口了:
首先打开excel表格文件:
QAxObject *excel = new QAxObject();//建立excel操作对象
excel->setControl("Excel.Application");//连接Excel控件
excel->setProperty("Visible", false);//不显示窗体看效果
excel->setProperty("DisplayAlerts", false);//不显示警告看效果
QAxObject *workbooks = excel->querySubObject("WorkBooks");
workbooks->dynamicCall("Open(const QString&)", path);//获取excel文件的路径
QAxObject *workbook = excel->querySubObject("ActiveWorkBook");
QAxObject *worksheet = workbook->querySubObject("WorkSheets(int)",1);//访问excel中的工作表中第一个单元格
QAxObject * usedRange = worksheet->querySubObject("UsedRange");//获取文件sheet页
读:访问指定单元格内容信息,并赋值给变量:
QAxObject *cell = excel->querySubObject("Cells(Int, Int)", 1, 1 );//访问第一行第一列的单元格中的数据
QString str = cell->dynamicCall("value").toString();
写:将指定数据写到指定单元格中并保存退出:
QAxObject* range1 = worksheet->querySubObject("Range(const QString&)", "A28"); // 假设我们要修改A1单元格
range1->dynamicCall("SetValue(const QVariant&)", QVariant(examopen.GPIB_35670_CH2_sensitivity)); // 设置单元格的值
workbook->dynamicCall("Save()");//保存
*注意:当文件被其他程序占用时,则写入不成功!
最后关闭文件;
workbook->dynamicCall( "Close(Boolean)", false ); excel->dynamicCall( "Quit(void)" ); delete excel;
QAxObject *excel = new QAxObject();//建立excel操作对象
excel->setControl("Excel.Application");//连接Excel控件
excel->setProperty("Visible", false);//不显示窗体看效果
excel->setProperty("DisplayAlerts", false);//不显示警告看效果
QAxObject *workbooks = excel->querySubObject("WorkBooks");
workbooks->dynamicCall("Open(const QString&)", "D:/lns/B06A00_database.xlsx");//获取excel文件的路径
QAxObject *workbook = excel->querySubObject("ActiveWorkBook");
QAxObject *worksheet = workbook->querySubObject("WorkSheets(int)",1);//访问excel中的工作表中第一个单元格
QAxObject* range = worksheet->querySubObject("Range(const QString&)", "A27"); // 假设我们要修改A1单元格
range->dynamicCall("SetValue(const QVariant&)", QVariant(examopen.GPIB_35670_CH1_sensitivity)); // 设置单元格的值
QAxObject* range1 = worksheet->querySubObject("Range(const QString&)", "A28"); // 假设我们要修改A1单元格
range1->dynamicCall("SetValue(const QVariant&)", QVariant(examopen.GPIB_35670_CH2_sensitivity)); // 设置单元格的值
QAxObject *cell = excel->querySubObject("Cells(Int, Int)", 1, 1 );//访问第一行第一列的单元格中的数据
QString str = cell->dynamicCall("value").toString();
workbook->dynamicCall("Save()");
workbook->dynamicCall("Close()");
excel->dynamicCall("Quit()");
delete excel;