在.pro文件中添加模块:
QT += core gui axcontainer
参考界面:界面中只有一个 pushButton 按钮。
参考代码:
mainwindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QAxObject>
#include <QFile>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
// 点击 pushButton 按钮
void on_pushButton_clicked();
private:
// 生成 Microsoft Excel 官方接口文档以供参考
void generateDoc(QAxObject *obj,const QString &docName);
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
// 生成 Microsoft Excel 官方接口文档以供参考
void MainWindow::generateDoc(QAxObject *axObject, const QString &docName)
{
// 生成 Microsoft Excel 接口官方接口文档
QString doc = axObject->generateDocumentation();
// 保存文档
QFile file(docName);
file.open(QIODevice::WriteOnly);
file.write(doc.toLocal8Bit());
file.close();
}
// 点击 pushButton 按钮
void MainWindow::on_pushButton_clicked()
{
// "Excel.Application" 是 Windows 平台上的一个标识和访问 Microsoft Excel 的 COM 组件
// 在注册表中的路径为:HKEY_CLASSES_ROOT\Excel.Application
QAxObject axObject("Excel.Application");
// 生成 Microsoft Excel 接口官方接口文档
//generateDoc(&axObject,"Excel.html");
// 设置 Excel 应用程序窗口的可见性(打开 Excel 程序)
//axObject.dynamicCall("SetVisible(bool)", true);
// 获取 Excel 中对工作簿集合的访问
QAxObject *workbooks = axObject.querySubObject("Workbooks");
// 生成工作簿集合接口文档
//generateDoc(workbooks,"workbooks.html");
// 获取 Excel 中对工作簿的访问
QAxObject *workbook = workbooks->querySubObject("Add()");
// 生成工作簿接口文档
//generateDoc(workbook,"workbook.html");
// 获取 Excel 中对 sheets 的访问
QAxObject *sheets = workbook->querySubObject("Sheets");
// 生成 sheets 接口文档
//generateDoc(sheets,"sheets.html");
// 获取 Excel 中对 sheet 的访问
// 获取与工作表集合(sheets)中的第一个工作表(sheet)相关联的 QAxObject 对象的指针。
// 索引从 1 开始计数,表示第一个工作表
QAxObject *sheet = sheets->querySubObject("Item(QVariant)",1);
// 生成 sheet 接口文档
//generateDoc(sheet,"sheet.html");
// 获取 Excel 中对 cells(单元格) 的访问
QAxObject *cells = sheet->querySubObject("Cells");
// 生成 cells 接口文档
//generateDoc(cells,"cells.html");
/*
操作 Excel 表格中的单元格
*/
// 插入 10行 10列测试数据
for(int row = 1;row<=10;++row)
{
for(int column = 1;column<=10;++column)
{
cells->dynamicCall("SetItem(QVariant, QVariant, QVariant)",row,column,"测试数据");
}
}
// 设置 Excel 工作簿的保存路径
workbook->dynamicCall("SaveAs(QVariant)", "C:\\Users\\A\\Desktop\\data.xlsx");
// 退出 Excel 程序
axObject.dynamicCall("Quit()");
}
程序执行效果:会在桌面生成一个data.xlsx文档,打开此文档后显示如下信息:
文章来源:https://www.toymoban.com/news/detail-605520.html
注意:若你的电脑安装的是 WPS ,没有安装 Office,那么使用 WPS 中的 Excel 也是完全没问题的,Qt 调用 WPS Excel 组件操作步骤 和 调用 Microsoft Excel 组件完全相同,除了在调用 WPS Excel 组件时将Office的QAxObject axObject(“Excel.Application”);更改为QAxObject axObject(“KET.Application”);文章来源地址https://www.toymoban.com/news/detail-605520.html
到了这里,关于Qt 调用 Microsoft Excel 组件生成 Excel 文档的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!