当前位置: 首页 > article >正文

QT 通过QAxObject与本地应用程序读取Excel内容

首先在配置中加入

QT += axcontainer

在开发过程中,经常需要与Excel文件进行交互,例如读取数据、写入数据或进行格式设置。Qt提供了一个强大的类QAxObject,通过它可以方便地操作Excel文件。

QAxObject excel("ket.Application");
    if (excel.isNull()) {
        QMessageBox::critical(this, "错误", "没有发现Excel可执行程序,请安装WPS");
        return;
    }
    excel.setProperty("Visible", false);
    QAxObject *workbooks = excel.querySubObject("Workbooks");
    if (!workbooks) {
        QMessageBox::critical(this, "错误", "无法访问文件!");
        return;
    }
    workbooks->dynamicCall("Open(const QString&)", xlsPath);
    QAxObject * workbook = excel.querySubObject("ActiveWorkBook");
    QAxObject *sheet = workbook->querySubObject("Worksheets(int)", 1);
    if (!sheet) {
        QMessageBox::critical(this, "错误", "无法访问表格1!");
        return;
    }
    QAxObject *usedRange = sheet->querySubObject("UsedRange");
    if (!usedRange) {
        QMessageBox::critical(this, "错误", "无法访问使用范围!");
        return;
    }
    QAxObject *rows = usedRange->querySubObject("Rows");
    QAxObject *columns = usedRange->querySubObject("Columns");
    int rowCount = rows->property("Count").toInt();
    int colCount = columns->property("Count").toInt();
    for (int row = 1; row <= rowCount; ++row) {
        for (int col = 1; col <= colCount; ++col) {
            QAxObject *cell = sheet->querySubObject("Cells(int,int)", row, col);
            QString cellValue = cell->dynamicCall("Value2()").toString();
            delete cell;
        }
    }

http://www.kler.cn/a/506990.html

相关文章:

  • Ubuntu本地部署网站
  • 怎么用python写个唤醒睡眠电脑的脚本?
  • 大文件上传的解决办法~文件切片、秒传、限制文件并发请求。。。
  • ORB-SLAM2源码学习: Frame.cc: cv::Mat Frame::UnprojectStereo将某个特征点反投影到三维世界坐标系中
  • 2Spark Core
  • LLM - 大模型 ScallingLaws 的 Causal/Masked (PLM) 目标系数差异 教程(2)
  • 汽车故障码U100187 LIN1Communication time out 解析和处理方法
  • 【50个服务器常见端口】
  • 【Linux】sed编辑器二
  • 基于华为云车牌识别服务设计的停车场计费系统【华为开发者空间-鸿蒙】
  • ArcGIS模拟风场(流场)
  • 《AI与鸿蒙Next:建筑设计可视化的革新力量》
  • 使用AKTools本地部署AKShare财经数据接口库
  • 《零基础Go语言算法实战》【题目 4-12】找到给定集合的所有子集
  • 【CSS】 ---- CSS 实现图片随鼠标移动局部放大特效
  • VSCode代理配置导致的SSL证书验证错误及解决方案
  • Conda的一些常用命令
  • 运行fastGPT 第二步 安装宝塔面板 用于管理安装docker和其文件
  • 1.15寒假作业
  • Hooks扩展
  • 【刷题笔记】滑动窗口单调队列题目
  • 大疆最新款无人机发布,可照亮百米之外目标
  • Redis超详细入门教程(基础篇)
  • Spring Boot自动装配原理与Stater开发及使用场景
  • JAVA EE与Spring的关系
  • DP读书:江苏省政府境外奖学金申请指南——A2悉尼大学现代工业设计【2024学习指南、笔记总结】+ 苏教国际 + 悉尼大学短期交流攻略 Blog 版