Qt5.15版本操作Excel表格说明

在*.pro文件中加入

QT  +=  axcontainer
CONFIG +=qaxcontainer //网上好多案例都没说这个,导致老是报错
CONFIG +=axcontainer //

在*.h文件中头文件加入

#include <ActiveQt/QAxObject>
#include<ActiveQt/QAxBase>

可能新版本得qt目录发生变化了,放进active里面

在*.cpp文件中和网上的案例大致相同,但是注意结束时记得要close(),不然后台有很多个Excel线程

    excel = new QAxObject("Excel.Application");
    excel->dynamicCall("SetVisible(bool)", true);//设定是否隐藏Excel软件
    excel->dynamicCall("DisplayAlerts", false);//屏蔽Excel报警信息
    workbooks = excel->querySubObject("WorkBooks");


    workbook = workbooks->querySubObject("Open(QString&)",
                                         filename);

    excel = new QAxObject("Excel.Application");
    excel-> querySubObject("Open(const QString&)", filename);

    QAxObject * worksheets = workbook->querySubObject("WorkSheets");

    QAxObject * worksheet = worksheets->querySubObject("Item(int)", 1);



        //表格范围和行数列数
        QAxObject * usedrange = worksheet->querySubObject("UsedRange");

        QAxObject * rows = usedrange->querySubObject("Rows");
        int iRows = rows->property("Count").toInt();
        qDebug() << "行数为: %1"+(QString::number(iRows));

        QAxObject * columns = usedrange->querySubObject("Columns");
        int iColumns = columns->property("Count").toInt();
        qDebug() << "列数为: %1"+(QString::number(iColumns));

        int iStartRow = rows->property("Row").toInt();
        qDebug() << "起始行为: %1"+(QString::number(iStartRow));

        int iColumn = columns->property("Column").toInt();
        qDebug() << "起始列为: %1"+(QString::number(iColumn));



//        //读出数据
//        QAxObject *range1 = worksheet->querySubObject("Range(QString)", "F6");
//        QString strRow6Col6 = range1->property("Value").toString();
//        qDebug() << QString::fromLocal8Bit("第6行,第6列的数据为:") + strRow6Col6;



        //写入数据

        QAxObject *range2 = worksheet->querySubObject("Range(QString)", "F6");
        range2->setProperty("Value", "ddf");
        for(int i = 0;i<sheetsName.size();i++)
        {
            //QString cora = "A" + QString::number(i+2);
            QString columnName = sheetColumnName[i+1]+"1";
            QAxObject *rangea = worksheet->querySubObject("Range(QString)", columnName);
            rangea->setProperty("Value", sheetsName.at(i));
//            QString corb = "B" + QString::number(i+2);
//            QAxObject *rangeb = worksheet->querySubObject("Range(QString)", corb);
//            rangeb->setProperty("Value", sheetsName.at(i).dt.toString("yyyy/MM/dd HH:mm:ss"));

//            QString corc = "C" + QString::number(i+2);
//            QAxObject *rangec = worksheet->querySubObject("Range(QString)", corc);
//            rangec->setProperty("Value", sheetsName.at(i).res);
        }
        
 //保存文件
 
        workbook->dynamicCall("Save()");
       workbook->dynamicCall("Close()");             
       workbooks->dynamicCall("Save()");
       workbooks->dynamicCall("Close()");
       excel->dynamicCall("Quit()");

//        if (excel)
//        {
//            delete excel;
//            excel = NULL;
//        }

//        QMessageBox::information(0 ,
//                              "提示" , "报表生成成功",
//                              QMessageBox::Ok | QMessageBox::Default ,
//                              0 );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值