Qt导出EXCEL的三种办法:第二种方法:QAxObject

Qt自带的类QAxObject导出Excel

QAxObject是Qt的一个原生类库,可以操作office文件,但是它依赖于ActiveX的可用性,并且在不同的平台和环境中可能会有一些差异。此外,该方法要求用户系统上安装有相应的ActiveX对象(如Microsoft Office)
实现代码:

#include <QCoreApplication>
#include <QAxObject>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QAxObject excel("Excel.Application");
    excel.setProperty("Visible", true);
    QAxObject *workbooks = excel.querySubObject("Workbooks");
    QAxObject *workbook = workbooks->querySubObject("Add()");

    QAxObject *worksheet = workbook->querySubObject("Worksheets(int)", 1);
    // 写入数据到单元格
    QAxObject *cell = worksheet->querySubObject("Cells(int, int)", 1, 1);
    cell->dynamicCall("SetValue(const QVariant&)", "Hello");
    // 保存工作簿
    workbook->dynamicCall("SaveAs(const QString&)", QDir::currentPath() + "/example.xlsx");
    // 关闭Excel应用
    excel.dynamicCall("Quit()");
    return a.exec();
}

优点

1)个人认为QAxObject的优点确实没有什么,我想唯一的优点就是可以直接使用,不需要编译第三方的源码。

缺点

1)依赖于平台和ActiveX对象: QAxObject 的可移植性受限于ActiveX的可用性,并且在不同的平台和环境中可能会有一些差异。此外,该方法要求用户系统上安装有相应的ActiveX对象(如Microsoft Office)。

2)性能: 直接与ActiveX对象进行交互可能引入一些性能开销,特别是在处理大量数据或频繁调用操作时。本人亲测导出数据慢到无法忍受

从使用角度,若是单机使用,数据量少可以使用QAxObject,免去第三方调用的问题,若是需要发布使用,不推荐,建议使用第三方。

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要在Qt导出Excel文件,可以使用QAxObject类来与Microsoft Excel进行交互。下面是一个简单的示例代码,演示了如何导出一个包含数据Excel文件: ```cpp #include <QAxObject> #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); // 创建Excel应用程序对象 QAxObject excel("Excel.Application"); // 创建工作簿 QAxObject *workbook = excel.querySubObject("Workbooks")->querySubObject("Add()"); // 获取第一个工作表 QAxObject *worksheet = workbook->querySubObject("Worksheets(int)", 1); // 写入数据 QAxObject *cell = worksheet->querySubObject("Cells(int,int)", 1, 1); cell->dynamicCall("SetValue(const QVariant&)", "Hello"); cell = worksheet->querySubObject("Cells(int,int)", 1, 2); cell->dynamicCall("SetValue(const QVariant&)", "World"); // 保存工作簿 workbook->dynamicCall("SaveAs(const QString&)", "C:\\path\\to\\output.xlsx"); // 关闭工作簿和Excel应用程序 workbook->dynamicCall("Close()"); excel.dynamicCall("Quit()"); delete cell; delete worksheet; delete workbook; return a.exec(); } ``` 在上述代码中,我们使用QAxObject类与Excel应用程序进行交互。首先,我们创建了一个Excel应用程序对象,然后使用该对象创建了一个新的工作簿。接下来,我们获取第一个工作表并在单元格中写入数据。最后,我们保存工作簿,关闭工作簿和Excel应用程序。 请注意,为了使上述代码能够正常工作,你需要在.pro文件中添加以下行: ``` QT += axcontainer ``` 这将确保你的应用程序包含与ActiveX对象进行通信所需的模块。 希望这可以帮助你导出Excel文件。如果有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大头鼹鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值