2

我正在使用QAxObject并能够打开现有文件并读取不同的工作表和单元格。

但是当我使用QAxObject. 它正在创建test_1.xls文件。但是当我打开这个文件时,它给了我错误。我正在使用ms-excel-2007.

代码 : - -

   QAxWidget excel_1("Excel.Application");
   excel_1.setProperty("Visible", false);

   QAxObject * workbooks_1 = excel_1.querySubObject("WorkBooks");

   workbooks_1->dynamicCall("Add");
   QAxObject * workbook_1 = excel_1.querySubObject("ActiveWorkBook");
   QAxObject * worksheets = workbook_1->querySubObject("WorkSheets");

   excel_1.setProperty("DisplayAlerts", 0);
   workbook_1->dynamicCall("SaveAs (const QString&)", QString("D:\\Temp\\test_1.xls"));
   workbook_1->dynamicCall("Close (Boolean)", false);
   excel_1.setProperty("DisplayAlerts", 1);
   excel_1.dynamicCall("Quit (void)");

error message当我尝试打开此文件时:-----

The file you are trying to open is diffrent format than xls. 
Verify that file is corrupted or not do you want to open this file or not

请建议我.xls以正确格式创建文件所缺少的内容?

4

1 回答 1

2

好的,我解决了这个问题。因为我安装的是Office2007,“保存”功能会将文件保存为2007格式,但是我保存为“*.xls”,有些格式无法正确识别。

所以解决方案是,使用“SaveAs”将excel保存为2003格式。

如何通过 Qt 设置 excel 列格式?

QList<QVariant> lstParam;
lstParam.append("D:\\Temp\\test_1.xls");
lstParam.append(-4143);
lstParam.append("");
lstParam.append("");
lstParam.append(false);
lstParam.append(false);
lstParam.append(1);
lstParam.append(2);
lstParam.append(false);
lstParam.append(false);
lstParam.append(false);
lstParam.append(false);

workbook_1->dynamicCall("SaveAs(QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant)", lstParam);
于 2013-07-19T03:58:18.647 回答