void queryOneObject(QAxObject *worksheet,QString label,int row,QString data){
QAxObject *cellOne;
label.append(QString::number(row));
cellOne = worksheet->querySubObject("Range(QVariant, QVariant)",label);
cellOne->dynamicCall("SetValue(const QVariant&)",QVariant(data));
}
void saveout(){
//获取保存路径
QString filepath=QFileDialog::getSaveFileName(this,tr("Save"),".",tr(" (*.xlsx)"));
if(filepath.isEmpty()){
ui->label_Tip->hide();
qDebug()<<"创建exel文件失败!";
return;
}else{
ui->label_Tip->show();
}
QVector exlData;
exlData = actionDone::getInstance()->mSaveoutExl;
int rows = exlData.size();
qDebug()<<"待导出:"<<rows<<"行";
if(rows==0){
QMessageBox::information(nullptr,"提示",start+"--"+end+"无导出记录 ");
return;
}
QAxObject *excel = new QAxObject(this);
//连接Excel控件
excel->setControl("Excel.Application");
//不显示窗体
excel->dynamicCall("SetVisible (bool Visible)","false");
//不显示任何警告信息。如果为true那么在关闭是会出现类似“文件已修改,是否保存”的提示
excel->setProperty("DisplayAlerts", false);
//获取工作簿集合
QAxObject *workbooks = excel->querySubObject("WorkBooks");
//新建一个工作簿
workbooks->dynamicCall("Add");
//获取当前工作簿
QAxObject *workbook = excel->querySubObject("ActiveWorkBook");
//获取工作表集合
QAxObject *worksheets = workbook->querySubObject("Sheets");
//获取工作表集合的工作表1,即sheet1
QAxObject *worksheet = worksheets->querySubObject("Item(int)",1);
//设置标题
int cellrow=1;
queryOneObject(worksheet,"A",cellrow,"姓名");
queryOneObject(worksheet,"B",cellrow,"年龄");
queryOneObject(worksheet,"C",cellrow,"号码");
queryOneObject(worksheet,"D",cellrow,"出生地");
queryOneObject(worksheet,"E",cellrow,"爱好");
queryOneObject(worksheet,"F",cellrow,"情况");
QStringList Actionlist = mySet::getInstance()->mActionlist;
QStringList statelist;
statelist<<"未发起"<<"失败"<<"成功";
//设置表格数据
for(int i=0;i
stOneContent one= exlData.at(i);
if(isaddexcel(one)==false){
continue;
}
cellrow++;
//设置要操作的单元格,如A1,A2,A3,A4
queryOneObject(worksheet,"A",cellrow, one.tNumber);
queryOneObject(worksheet,"B",cellrow, one.tName);
queryOneObject(worksheet,"C",cellrow, one.tContent);
queryOneObject(worksheet,"D",cellrow, Actionlist[one.tAction]);
queryOneObject(worksheet,"E",cellrow, one.tReplyWords);
queryOneObject(worksheet,"F",cellrow, statelist[one.tzhongCai]);
}
//保存至filepath,用QDir::toNativeSeparators将路径中的"/"转换为"\",
workbook->dynamicCall("SaveAs(const QString&)",QDir::toNativeSeparators(filepath));
workbook->dynamicCall("Close()");
excel->dynamicCall("Quit()");//关闭excel
delete excel;
excel= nullptr;
qDebug() << "\n导出成功";
ui->label_Tip->hide();
QMessageBox::information(nullptr,"提示", "导出完成");
}