QT操作Excel

来源:互联网 发布:plsql数据库建表 编辑:程序博客网 时间:2024/06/05 08:57

利用QT操作Excel,其实只是想总结一下Excel早Qt中的用处,因为最近的项目正好在用到Excel,自己也是摸索了好久。



 QFileInfo fileinfo(g_strSystemPath,"Cmaintetance.xls");    bool p1= fileinfo.exists();         if(p1)         {                ;         }         else         {             filename= QFileDialog::getSaveFileName(this, "保存",                    g_strSystemPath,                    "Excel 文件(*.xls *.xlsx)");         }        if (filename!="")        {            qDebug()<<"coming excel";            QAxObject *excel = new QAxObject;            if (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 *worksheet = workbook->querySubObject("Worksheets(int)", 1);//* sheet1的数据                QAxObject *cell11 = worksheet->querySubObject("Cells(int,int)", 1, 1);                cell11->setProperty("Value", "仪器名称");  //设置单元格值                cell11->setProperty("RowHeight", 20);  //设置单元格行高                cell11->setProperty("ColumnWidth", 10);  //设置单元格列宽                cell11->setProperty("WrapText", true);  //内容过多,自动换行                QAxObject *cell12 = worksheet->querySubObject("Cells(int,int)", 1, 2);                cell12->setProperty("Value", "核酸");  //设置单元格值                cell12->setProperty("RowHeight", 20);  //设置单元格行高                cell12->setProperty("ColumnWidth", 15);  //设置单元格列宽                QAxObject *cell13 = worksheet->querySubObject("Cells(int,int)", 1, 3);                cell13->setProperty("ColumnWidth", 15);  //设置单元格列宽                QString merge_cell;                merge_cell.append(QChar(2 - 1 + 'A'));  //初始列                merge_cell.append(QString::number(1));  //初始行                merge_cell.append(":");                merge_cell.append(QChar(3 - 1 + 'A'));  //终止列                merge_cell.append(QString::number(1));  //终止行                QAxObject *merge_range = worksheet->querySubObject("Range(const QString&)", merge_cell);                merge_range->setProperty("MergeCells", true);  //合并单元格

  workbook->dynamicCall("SaveAs(const QString&)",QDir::toNativeSeparators(filename));//保存至fileName                workbook->dynamicCall("Close()");//关闭工作簿                excel->dynamicCall("Quit()");//关闭excel                delete excel;                excel=NULL;                if (QMessageBox::question(NULL,"完成","文件已经导出,是否现在打开?",QMessageBox::Yes|QMessageBox::No)==QMessageBox::Yes)                {                    QDesktopServices::openUrl(QUrl("file:///" + QDir::toNativeSeparators(filename)));                }            }            else            {                QMessageBox::warning(NULL,"错误","未能创建 Excel 对象,请安装 Microsoft Excel。",QMessageBox::Apply);            }        }



这个应该是一个可以使用的Excel例子,可以读取,可以写入,还可以设置Excel的单元格设置,Excel的设置是根据Microsoft Excel的VBA来设置的。