在*.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 );