Qt 调用 Microsoft Excel 组件生成 Excel 文档

在.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文档,打开此文档后显示如下信息:
在这里插入图片描述

注意:若你的电脑安装的是 WPS ,没有安装 Office,那么使用 WPS 中的 Excel 也是完全没问题的,Qt 调用 WPS Excel 组件操作步骤 和 调用 Microsoft Excel 组件完全相同,除了在调用 WPS Excel 组件时将Office的QAxObject axObject(“Excel.Application”);更改为QAxObject axObject(“KET.Application”);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值