关于Qt操作Excel,无法保存的问题

你的OPPA 2018-03-07 11:04:12

QString excelFile("E:\\QtTest\\ExcelCOMTest\\ExcelCOMTest\\data.xls");
QString excelFile1("E:\\QtTest\\ExcelCOMTest\\ExcelCOMTest\\new.xlsx");
FILE* fp = fopen(excelFile.toStdString().c_str(), "rb");
if (fp == NULL)
{
return;
}
fclose(fp);
cprintf("fopenFile success\n");
QAxObject excelObj("Excel.Application");
excelObj.dynamicCall("SetVisible(bool)", false);
excelObj.setProperty("DisplayAlerts", true);/*不显示任何警告信息,如果为true,那么关闭时会出现类似“是否保存对某某文件的更改”*/
//excelObj.setProperty("Visible", true);
QAxObject* work_books = excelObj.querySubObject("Workbooks");
work_books->dynamicCall("Open(const QString&)", excelFile);
QAxObject* work_book = excelObj.querySubObject("ActiveWorkBook");

QAxObject* work_sheet = work_book->querySubObject("Sheets(int)", 1);//获取第一个sheet页

QAxObject* pagesetup = work_sheet->querySubObject("PageSetup");
bool btemp = pagesetup->property("DifferentFirstPageHeaderFooter").toBool();
pagesetup->setProperty("DifferentFirstPageHeaderFooter", true);
btemp = pagesetup->property("DifferentFirstPageHeaderFooter").toBool();
work_books->dynamicCall("Save()");
work_books->dynamicCall("Close(Boolean)", false);
excelObj.dynamicCall("Quit(void)");

以上就是测试代码,保存的是Excel打印页面属性中的首页页眉页脚不同这个属性。
excelObj.setProperty("DisplayAlerts", true);/*不显示任何警告信息,如果为true,那么关闭时会出现类似“是否保存对某某文件的更改”*/

这行代码设置为true就会在保存的时候弹出提示框(是否保存对某某文件的更改);因为我不想要这个提示框出现,所以设置为false,这样的话不会弹框提示,但是保存无效。
这要怎么解决?
...全文
1153 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
你的OPPA 2018-03-07
  • 打赏
  • 举报
回复
终于找到原因了:

work_books->dynamicCall("Save()");
上面的代码是针对工作簿集合进行保存,具体为什么会弹出这个提示框的原因还是不清楚。 只要把work_books改成work_book,即工作簿集合中的一个成员
你的OPPA 2018-03-07
  • 打赏
  • 举报
回复
有没有哪位大神帮忙解决下啊···

16,224

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧