void dataExport::dataExport_slots()
{
QSqlQueryModel *model = new QSqlQueryModel;
QString sql_count ="select count(*) from infor1";
model->setQuery(sql_count);
QSqlRecord rec = model->record(0);
int count = rec.value(0).toInt();
//qDebug()<<count;
QString sql="select * from infor1";
model->setQuery(sql);
//----------------------------------打开excel--------------------------------------
QAxWidget excel("Excel.Application");
excel.setProperty("Visible", true);
QAxObject * workbooks = excel.querySubObject("WorkBooks");
//获取excel的绝对路径
QString path = QCoreApplication::applicationDirPath();
QString table = "/Data/***.xls";
path = path+table;
//qDebug()<<path;
workbooks->dynamicCall("Open (const QString&)", QString(path));
QAxObject * workbook = excel.querySubObject("ActiveWorkBook");
QAxObject * sheets = workbook->querySubObject("WorkSheets");
//删除原先的Sheet;
QAxObject * a = sheets->querySubObject("Item(const QString&)", QVariant("Sheet1"));
a->dynamicCall("delete");
//新建一个Sheet;
sheets->querySubObject("Add()");
QAxObject * b = sheets->querySubObject("Item(int)", 1);
b->setProperty("Name", QVariant("Sheet1"));
QAxObject *sheet = sheets->querySubObject( "Item(const QVariant&)", QVariant("Sheet1") );
//----------------------------------写数据------------------------------------------
for(int i=1; i<(count+1); i++)
{
QSqlRecord record = model->record(i-1);
for(int j=1; j<5; j++)
{
QAxObject *range = sheet->querySubObject("Cells(int,int)", i, j);
range->dynamicCall("SetValue(const QString&)", record.value(j-1).toString());
}
}
}
我是先将数据写入到数据库,然后再导出的,希望能帮到你