qt打开excel名称传递错误

Posted

技术标签:

【中文标题】qt打开excel名称传递错误【英文标题】:qt open excel name passing error 【发布时间】:2014-11-12 05:55:39 【问题描述】:

现在我正在制作一个程序,它可以读取两张 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>

workbooks->dynamicCall("Open(const QString&)", QString(":/temp/temp.xls")); 这部分出现错误

我在resource.qrc中插入了一个excel模板文件

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

如果我传递了文件的绝对路径,然后工作。但是如果我传递了文件的相对路径,就不行了

我该如何解决这个问题? 请告诉我.. 谢谢

【问题讨论】:

当你把它作为资源时,你怎么能给出相对路径? 如果我将 excel 文件添加到 qrc 文件中,我可以访问此文件:/temp/temp.xls 但它不起作用。如果我给 c:\user\desktop\temp\temp.xls 那么它可以工作 【参考方案1】:

    您可以将 excel 文件放在项目内的某个目录中,例如 docs 或其他内容。

    设置你的当前目录 QDir::setCurrent(QCoreApplication::applicationDirPath())

    您可以访问 doc 文件夹中的文件,例如“docs/anyfile.xls”

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

【讨论】:

谢谢。我是那样做的。当我将此项目发布到安装文件时。如何包含这个模板文件? 只需复制 docs 文件夹以及可执行文件所在的二进制文件即可。【参考方案2】:

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

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

    将文件添加为资源。资源文件将如下所示:

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

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

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

希望能解决问题。如果有任何问题,请发表评论。

【讨论】:

谢谢。这将是另一种解决方案。但我听说如果我在 .qrc 文件中添加一个文件,这个文件是只读的。但我想打开这个文件只写。如果不是,我将使用您的解决方案。请回复 是的,正如您所提到的,在 qrc 中添加的文件是只读的。这是因为它们被打包到 exe 本身中。如果您说明您的问题到底是什么,您希望使用 excel 文件实现什么目标,将会更有帮助? 我的程序正在从两个 Excel 表中读取数据。并提取数据,写入一张excel表并保存。我想将所有提取的数据写入模板文件并保存。我的客户想要模板 excel 表必须自动加载。当我发布这个项目时,我必须发布包括这个模板

以上是关于qt打开excel名称传递错误的主要内容,如果未能解决你的问题,请参考以下文章

VBA背面运行Python的权限错误

用qt读写excel文件一定要安装excel么

Qt 5.7.1 error: C1083: 无法打开包括文件: “cstddef”: No such file or directory

从VBA Excel 2007打开与MySQL的连接

QT操作excel,打开一个工作簿过后要去获取工作表对象时失败。总是提示没有Sheets这个属性。求解答。谢谢

Excel2016 打开表格里面图片显示#name?