qt打开excel名称传递错误

qt open excel name passing error

本文关键字:错误 打开 excel qt      更新时间:2023-10-16

现在我正在制作一个程序,它读取两张excel表并将其制作成一张。

一切都很好。但是我有一个问题

那就是

    QAxWidget *excel=new QAxWidget("Excel.Application", this);
    excel->dynamicCall("SetVisible", true);
    QAxObject *workbooks=excel->querySubObject("WorkBooks");
    workbooks->dynamicCall("Open(const QString&)", QString(":/temp/temp.xls"));
    QAxObject *workbook=excel->querySubObject("ActiveWorkBook");
    QAxObject *worksheets=workbook->querySubObject("WorkSheets");

我的qrc文件

    <RCC>    
       <qresource prefix="/">        
          <file>temp/temp.xls</file>    
       </qresource>
    </RCC>

工作簿->dynamicCall("打开(const QString&)",QString(":/temp/temp.xls");这部分发生错误

我在我的资源中插入了一个excel模板文件.qrc

我试着打开,但没有成功。

如果我传递了文件的绝对路径,那么就工作。但如果我通过了文件的相对路径,就不能使用

我该怎么解决这个问题??请告诉我。。感谢

  1. 你可以把excel文件放在项目中的某个目录中,比如文档之类的。

  2. 设置当前目录QDir::setCurrent(QCoreApplication::applicationDirPath())

  3. 您可以访问文档文件夹中的文件,如"docs/anyfile.xls"

如果将xls文件放在资源中,它将绑定在可执行文件中,Microsoft Office COM组件将无法访问。

  1. 将excel文件放在项目中的某个目录中,例如模板
    所以你的结构将是

    ProjectMainDirectory/ + - MyResources.qrc + - template/ + - temp.xls

  2. 将文件添加为资源。资源文件将类似于:

    <RCC> <qresource prefix="/Files"> <file>template/temp.xls</file> </qresource> </RCC>

  3. 现在尝试以":/Files/template/temp.xls的身份访问该文件。您应该能够访问该文件。

编译时,编译器将读取资源文件,并将资源文件打包到exe中。您不需要将xls文件与exe单独打包。

希望这能解决问题。如果有任何问题,请留下评论。