QT向Excel文件中写入数据:
1.写入数据后自动打开Excel文件,用户需手动选择是否保存写入信息
QAxObject excel("Excel.Application");
excel.setProperty("Visible",true);
QAxObject *workbooks=excel.querySubObject("Workbooks");
QAxObject *workbook = workbooks->querySubObject("Open(const QString&)",selectedFilePath);
if (workbook){
QAxObject *worksheet=workbook->querySubObject("Worksheets(int)",1); //获取excel文件中的第一个表
if(worksheet){
QAxObject *cell1 =worksheet->querySubObject("Cells(int,int)",1,1);//写入单元格row,col
cell1->dynamicCall("SetValue(const QVariant&)",QString("写入数据"));
delete cell1;
}
}
2.写入数据后不打开Excel文件,也不弹出弹窗信息,直接默认保存
QAxObject excel_("Excel.Application");
excel_.setProperty("Visible",false);
QAxObject *workbooks=excel_.querySubObject("Workbooks");
QAxObject *workbook;
workbook = workbooks->querySubObject("Open(const QString&)",filePath);
if (workbook){
QAxObject *worksheet=workbook->querySubObject("Worksheets(int)",1); //获取excel文件中的第一个表
if(worksheet){
QAxObject *cell1 =worksheet->querySubObject("Cells(int,int)",firstEmptyRow,col);
cell1->dynamicCall("setValue(const QString&)",QString("%1").arg("Content"));
excel_.setProperty("DisplayAlerts", false);
delete cell1;
workbook->dynamicCall("Save()");
//workbook->dynamicCall("SaveAs(const QString&)",filePath);
workbook->dynamicCall("Close()");//关闭工作簿
excel_.dynamicCall("Quit()");//关闭excel应用
}
}