QT操作Excel

新建QT GUI项目,在选择选项中勾选ActiveQT Container.

#include <qaxobject.h>

 QAxObject *obj = new QAxObject("Excel.Application");
 obj->setProperty("Visible", true);
 obj->setProperty("Caption", "Hello world");
 QAxObject *workBooks = obj->querySubObject("Workbooks");
 //打开已存的excel文件
 //QAxObject *workBook = workBooks->querySubObject("Open(QString)", "D:\\QTDemo\\OpExcel\\Debug\\1.xls");
 workBooks->dynamicCall("Add");
 QAxObject *workBook = workBooks->querySubObject("Item(const int)", 1);
 QAxObject *sheets = workBook->querySubObject("Sheets");
 QAxObject *sheet = sheets->querySubObject("Item(int)", 1);
 QAxObject *range = sheet->querySubObject("Range(const QVariant&)", QVariant(QString("A1:A1")));
 range->dynamicCall("Clear()");
 range->dynamicCall("SetValue(const QVariant&)", QVariant(5));
 obj->dynamicCall("SetScreenUpdating(bool)", true);

在Excel中插入图表

 QAxObject *excel = new QAxObject("Excel.Application", 0);
 excel->setProperty("SheetsInNewWorkbook", 1);
  excel->setProperty("Visible", true);
 QAxObject *workbooks = excel->querySubObject("Workbooks");
 QAxObject *workbook = workbooks->querySubObject("Add");
 QAxObject *worksheet = workbook->querySubObject("Worksheets (int)", 1);

 worksheet->setProperty("Name","Dati applicazione");

 QAxObject *cell = worksheet->querySubObject("Cells(int,int)", 1, 1);
 cell->dynamicCall("SetValue(String)", "Serie");

 cell = worksheet->querySubObject("Cells(int,int)", 1, 2);
 cell->dynamicCall("SetValue(String)", "Dati");

 for (int i = 2; i < 10; i++){
 cell = worksheet->querySubObject("Cells(int,int)", i, 1);
 cell->dynamicCall("SetValue(int)", i - 1);
 cell = worksheet->querySubObject("Cells(int,int)", i, 2);
 cell->dynamicCall("SetValue(double)", qrand());
 }

 QAxObject *charts = workbook->querySubObject("Charts");
 QAxObject *chart = charts->querySubObject("Add");
 chart->setProperty("Name", "Report Grafico dei dati");
 chart->setProperty("ChartType", 73);

 QAxObject * serie = chart->querySubObject("SeriesCollection(int)", 1);
 QAxObject * xvalues = worksheet->querySubObject("Range(A2:A9)");
 QAxObject * yvalues = worksheet->querySubObject("Range(B2:B9)");

 serie->setProperty("XValues", xvalues->asVariant());
 serie->setProperty("Values", yvalues->asVariant());

 

Qt中可以使用QAxObject类库来操作Excel文件。QAxObject是一个Qt的类,用于与ActiveX对象进行交互。它可以用于操作Office应用程序,如Excel、Word、PowerPoint等。 以下是一些常用的QAxObject类成员函数,用于操作Excel文件: - QAxObject(const QString& progID, QObject* parent = 0):创建一个QAxObject对象,用于与指定的ActiveX对象进行交互。 - setProperty(const QString& name, const QVariant& value):设置指定属性的值。 - dynamicCall(const QString& functionName, const QVariant& arg1, const QVariant& arg2, ...):调用指定函数,并传递参数。 - querySubObject(const QString& name):获取指定子对象。 - enumChildren():枚举子对象。 下面是一个示例代码,用于读取Excel文件中的数据: ```cpp QAxObject* excel = new QAxObject("Excel.Application", this); QAxObject* workbooks = excel->querySubObject("Workbooks"); QAxObject* workbook = workbooks->querySubObject("Open(const QString&)", "C:/example.xlsx"); QAxObject* sheets = workbook->querySubObject("Sheets"); QAxObject* sheet = sheets->querySubObject("Item(int)", 1); // 获取单元格A1的值 QAxObject* cell = sheet->querySubObject("Range(QString)", "A1"); QVariant value = cell->dynamicCall("Value()"); // 输出单元格A1的值 qDebug() << value.toString(); // 关闭工作簿和Excel应用程序对象 workbook->dynamicCall("Close()"); excel->dynamicCall("Quit()"); ``` 在上面的示例中,我们创建了一个Excel应用程序对象,打开了一个Excel文件,并获取了第一个工作表的对象。然后,我们获取了单元格A1的值,并输出了这个值。最后,我们关闭了工作簿和Excel应用程序对象。 除此之外,我们还可以使用QAxObject来写入Excel文件中的数据。下面是一个示例代码,用于向Excel文件中写入数据: ```cpp QAxObject* excel = new QAxObject("Excel.Application", this); QAxObject* workbooks = excel->querySubObject("Workbooks"); QAxObject* workbook = workbooks->querySubObject("Add()"); QAxObject* sheets = workbook->querySubObject("Sheets"); QAxObject* sheet = sheets->querySubObject("Item(int)", 1); // 写入单元格A1的值 QAxObject* cell = sheet->querySubObject("Range(QString)", "A1"); cell->dynamicCall("SetValue(const QVariant&)", "Hello, World!"); // 保存工作簿并关闭Excel应用程序对象 workbook->dynamicCall("Save()"); workbook->dynamicCall("Close()"); excel->dynamicCall("Quit()"); ``` 在上面的示例中,我们创建了一个Excel应用程序对象,并创建了一个新的工作簿。然后,我们获取了第一个工作表的对象,并将数据写入单元格A1中。最后,我们保存了工作簿,并关闭了Excel应用程序对象。 需要注意的是,在使用QAxObject操作Excel文件时,需要确保已经安装了Microsoft Office软件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值