2013-07-18 17 views
1

我正在与QAxObject并能够打开现有文件&阅读不同的工作表&单元格。QAxObject - 不以正确的格式创建excel

但是,当我使用QAxObject创建一个新的Excel文件。它正在创建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文件格式是否正确?

回答

1

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

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

How to set excel column format though Qt?

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); 
+0

可以接受你自己的答案,只要按一下绿色对勾。 – sashoalm