Qt 使用QAxObject创建一个excel

1.pro添加配置

QT       += axcontainer

2.头文件

#include <QAxObject>

3.头文件

    void newExcel(const QString &fileName);// 新建一个excel
    void appendSheet(const QString &sheetName,int cnt);// 增加一个worksheet
    void setCellValue(int row,int column,const QString &value);// 向Excel单元格中写入数据
    void saveExcel(const QString &fileName);// 保存excel
    void freeExcel();// 释放excel

private:
    Ui::TestExcel *ui;
    QAxObject *pApplication;
    QAxObject *pWorkBooks;
    QAxObject *pWorkBook;
    QAxObject *pSheets;
    QAxObject *pSheet;

4.实现

// 新建一个excel
void TestExcel::newExcel(const QString &fileName)
{
    pApplication = new QAxObject("Excel.Application");
    if (pApplication == nullptr) {
        qWarning("pApplication\n");
        return;
    }
    pApplication->dynamicCall("SetVisible(bool)",false);// false不显示窗体
    pApplication->setProperty("DisplayAlerts",false);// 不显示任何警告信息
    pWorkBooks = pApplication->querySubObject("Workbooks");
    QFile file(fileName);
    if (file.exists()) {
        pWorkBook = pWorkBooks->querySubObject("Open(const QString&)",fileName);
    } else {
        pWorkBooks->dynamicCall("Add");
        pWorkBook = pApplication->querySubObject("ActiveWorkBook");
    }
    pSheets = pWorkBook->querySubObject("Sheets");
    pSheet = pSheets->querySubObject("Item(int)",1);
}

// 增加一个worksheet
void TestExcel::appendSheet(const QString &sheetName,int cnt)
{
    QAxObject *pLastSheet = pSheets->querySubObject("Item(int)",cnt);
    pSheets->querySubObject("Add(QVariant)",pLastSheet->asVariant());
    pSheet = pSheets->querySubObject("Item(int)",cnt);
    pLastSheet->dynamicCall("Move(QVariant)",pSheet->asVariant());
    pSheet->setProperty("Name",sheetName);
}

// 向Excel单元格中写入数据
void TestExcel::setCellValue(int row,int column,const QString &value)
{
    QAxObject *pRange = pSheet->querySubObject("Cells(int,int)",row,column);
    pRange->dynamicCall("Value",value);
}

// 保存excel
void TestExcel::saveExcel(const QString &fileName)
{
    pWorkBook->dynamicCall("SaveAs(const QString &)",QDir::toNativeSeparators(fileName));
}

// 释放excel
void TestExcel::freeExcel()
{
    if (pApplication != nullptr) {
        pApplication->dynamicCall("Quit()");
        delete pApplication;
        pApplication = nullptr;
    }
}

5.调用

void TestExcel::on_writeBtn_2_clicked()
{
    QString fileName = "e:/测试.xlsx";
    newExcel(fileName);
    setCellValue(3,3,"Hello");
    setCellValue(3,6,"World");
    saveExcel(fileName);
    freeExcel();
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值