有关Qt中导出图片到xlsx的问题,可能是由于使用QAxObject时没有正确引用相关的COM组件,或者没有正确设置COM组件的权限导致的。

以下是一些可能的解决方法:

  1. 确保已经正确引用了Microsoft Excel COM组件。在Qt项目的.pro文件中添加以下代码:

    LIBS += -lole32
    
  2. 确保已经正确设置了COM组件的权限。可以尝试以管理员身份运行Qt应用程序,或者在注册表中设置COM组件的权限。具体的操作方法可以参考Microsoft的文档。

  3. 确保使用QAxObject的方式正确。以下是一个简单的示例代码,演示了如何使用QAxObject将图片插入到Excel文件中的第一个单元格:

    QAxObject excel("Excel.Application");
    excel.setProperty("Visible", false);
    QAxObject *workbooks = excel.querySubObject("Workbooks");
    QAxObject *workbook = workbooks->querySubObject("Add");
    QAxObject *sheets = workbook->querySubObject("Worksheets");
    QAxObject *sheet = sheets->querySubObject("Item(int)", 1);
    QAxObject *range = sheet->querySubObject("Range(const QString&)", "A1");
    QAxObject *pictures = sheet->querySubObject("Pictures");
    QAxObject *picture = pictures->querySubObject("Insert(const QString&)", "C:/path/to/image.jpg");
    picture->dynamicCall("ShapeRange.LockAspectRatio = msoTrue");
    picture->dynamicCall("ShapeRange.Width = 100");
    picture->dynamicCall("ShapeRange.Height = 100");
    range->dynamicCall("Select()");
    picture->dynamicCall("Cut()");
    range->dynamicCall("Paste()");
    excel.dynamicCall("SaveAs(const QString&)", "C:/path/to/output.xlsx");
    excel.dynamicCall("Quit()");
    delete picture;
    delete pictures;
    delete range;
    delete sheet;
    delete sheets;
    delete workbook;
    delete workbooks;
    excel.clear();
    

    请根据实际情况修改代码中的路径和其他参数。

希望以上信息能帮助到您解决问题。如果问题仍然存在,请提供更多的具体信息和错误日志,以便更好地帮助您

Qt图片导出到xslx中 QAxObject 为什么插不了

原文地址: http://www.cveoy.top/t/topic/hJKs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录