zoukankan      html  css  js  c++  java
  • QT操作EXCEL

    介绍一下最基本的QT对EXCEL的读写操作。

    声明:转载于:http://blog.csdn.net/czyt1988/article/details/52121360

    在使用QT的操作数据库的时候,可能会出现(一般都会出现)

    #include<QAxObject>
    这个文件找不到的错误

    要在.pro文件中添加:

    QT       += axcontainer

    然后就是对EXCEL的操作

    bool adminFinancial::exportToExcel()
    {
        QString filepath=QFileDialog::getSaveFileName(this,tr("Save orbit"),".",tr("Microsoft Office 2007 (*.xlsx)"));//获取保存路径
            if(!filepath.isEmpty()){
                QAxObject *excel = new QAxObject(this);
                excel->setControl("Excel.Application");//连接Excel控件
                excel->dynamicCall("SetVisible (bool Visible)","false");//不显示窗体
                excel->setProperty("DisplayAlerts", false);//不显示任何警告信息。如果为true那么在关闭是会出现类似“文件已修改,是否保存”的提示
    
                QAxObject *workbooks = excel->querySubObject("WorkBooks");//获取工作簿集合
                workbooks->dynamicCall("Add");//新建一个工作簿
                QAxObject *workbook = excel->querySubObject("ActiveWorkBook");//获取当前工作簿
                QAxObject *worksheets = workbook->querySubObject("Sheets");//获取工作表集合
                QAxObject *worksheet = worksheets->querySubObject("Item(int)",1);//获取工作表集合的工作表1,即sheet1
    
                QAxObject *cellA,*cellB,*cellC,*cellD;
    
                //设置标题
                int cellrow=1;
                QString A="A"+QString::number(cellrow);//设置要操作的单元格,如A1
                QString B="B"+QString::number(cellrow);
                QString C="C"+QString::number(cellrow);
                QString D="D"+QString::number(cellrow);
                cellA = worksheet->querySubObject("Range(QVariant, QVariant)",A);//获取单元格
                cellB = worksheet->querySubObject("Range(QVariant, QVariant)",B);
                cellC=worksheet->querySubObject("Range(QVariant, QVariant)",C);
                cellD=worksheet->querySubObject("Range(QVariant, QVariant)",D);
                cellA->dynamicCall("SetValue(const QVariant&)",QVariant("流水号"));//设置单元格的值
                cellB->dynamicCall("SetValue(const QVariant&)",QVariant("用户名"));
                cellC->dynamicCall("SetValue(const QVariant&)",QVariant("金额"));
                cellD->dynamicCall("SetValue(const QVariant&)",QVariant("日期"));
                cellrow++;
    
                int rows=this->model->rowCount();
                for(int i=0;i<rows;i++){
                    QString A="A"+QString::number(cellrow);//设置要操作的单元格,如A1
                    QString B="B"+QString::number(cellrow);
                    QString C="C"+QString::number(cellrow);
                    QString D="D"+QString::number(cellrow);
                    cellA = worksheet->querySubObject("Range(QVariant, QVariant)",A);//获取单元格
                    cellB = worksheet->querySubObject("Range(QVariant, QVariant)",B);
                    cellC=worksheet->querySubObject("Range(QVariant, QVariant)",C);
                    cellD=worksheet->querySubObject("Range(QVariant, QVariant)",D);
                    cellA->dynamicCall("SetValue(const QVariant&)",QVariant(this->model->item(i,0)->data(Qt::DisplayRole).toString()));//设置单元格的值
                    cellB->dynamicCall("SetValue(const QVariant&)",QVariant(this->model->item(i,1)->data(Qt::DisplayRole).toString()));
                    cellC->dynamicCall("SetValue(const QVariant&)",QVariant(this->model->item(i,2)->data(Qt::DisplayRole).toString()));
                    cellD->dynamicCall("SetValue(const QVariant&)",QVariant(this->model->item(i,3)->data(Qt::DisplayRole).toString()));
                    cellrow++;
                }
    
                workbook->dynamicCall("SaveAs(const QString&)",QDir::toNativeSeparators(filepath));//保存至filepath,注意一定要用QDir::toNativeSeparators将路径中的"/"转换为"",不然一定保存不了。
                workbook->dynamicCall("Close()");//关闭工作簿
                excel->dynamicCall("Quit()");//关闭excel
                delete excel;
                excel=NULL;
            }
            return true;
    }
    
    
  • 相关阅读:
    PCA手写版 Learner
    泛解析和伪静态实现二级域名(net技术)
    内存分配笔记(一)
    NVelocity的使用总结
    从discuz 里扒过来的一个通用序列化和反序列化类
    类中的执行顺序
    Nhibernate 工具 Nh profiler 使用方法
    UML中几种类间关系
    golf的23种设计模式
    net中的定时器
  • 原文地址:https://www.cnblogs.com/superxuezhazha/p/6233688.html
Copyright © 2011-2022 走看看