介紹一下最基本的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; }