当前位置: 首页> 房产> 市场 > 香港大学深圳医院_网站建设找博网_淘数据官网_百度网站是什么

香港大学深圳医院_网站建设找博网_淘数据官网_百度网站是什么

时间:2025/7/13 8:56:49来源:https://blog.csdn.net/byxdaz/article/details/146639359 浏览次数:1次
香港大学深圳医院_网站建设找博网_淘数据官网_百度网站是什么

        在 Qt 程序中操作 Excel 文件的常用方法有QAxObject、QtXlsx开源库、CSV格式等。

一、QAxObject

使用 QAxObject (仅限 Windows,需安装 Excel)

1、环境配置

  1. 添加依赖
    在 .pro 文件中添加 QT += axcontainer 以支持 ActiveX 组件‌。
  2. 包含头文件
    #include <QAxObject>
    #include <QVariant>

2、读取数据(每个单元格)

//创建 Excel 实例
QAxObject *excel = new QAxObject("Excel.Application");
excel->dynamicCall("SetVisible(bool)", false);  // 隐藏 Excel 界面‌//打开工作簿和工作表
QAxObject *workbooks = excel->querySubObject("WorkBooks");
QAxObject *workbook = workbooks->querySubObject("Open(QString)", "C:/test.xlsx");
QAxObject *worksheet = workbook->querySubObject("WorkSheets(int)", 1);  // 选择第一个工作表‌//读取数据(逐个单元格读取‌)
QAxObject *cell = worksheet->querySubObject("Cells(int,int)", 1, 1);  // 读取 A1 单元格
QVariant value = cell->dynamicCall("Value()");
delete cell;  // 手动释放内存‌//释放资源
range->deleteLater();
workbook->dynamicCall("Close()");
excel->dynamicCall("Quit()");
delete excel;  // 必须显式释放资源‌

3、批量读取数据(N个单元格) 

//创建 Excel 实例
QAxObject *excel = new QAxObject("Excel.Application");
excel->dynamicCall("SetVisible(bool)", false);  // 隐藏 Excel 界面‌//打开工作簿和工作表
QAxObject *workbooks = excel->querySubObject("WorkBooks");
QAxObject *workbook = workbooks->querySubObject("Open(QString)", "C:/test.xlsx");
QAxObject *worksheet = workbook->querySubObject("WorkSheets(int)", 1);  // 选择第一个工作表‌//读取数据(高效处理大量数据)
QAxObject *range = worksheet->querySubObject("Range(QString)", "B1:C10000");  // 读取 B1 到 C10000 区域
QVariant data = range->property("Value");  // 获取二维数组形式的数据‌
QVariantList rows = data.toList();
foreach (const QVariant &row, rows) {QVariantList cols = row.toList();// 处理每行数据
}//释放资源
range->deleteLater();
workbook->dynamicCall("Close()");
excel->dynamicCall("Quit()");
delete excel;  // 必须显式释放资源‌

4、写入数据

#include <QAxObject>void WriteExcel() {// 启动 Excel 应用QAxObject* excel = new QAxObject("Excel.Application");excel->setProperty("Visible", true); // 设置可见// 创建工作簿和工作表QAxObject* workbooks = excel->querySubObject("Workbooks");QAxObject* workbook = workbooks->querySubObject("Add");QAxObject* sheets = workbook->querySubObject("Worksheets");QAxObject* sheet = sheets->querySubObject("Item(int)", 1); // 第一个工作表// 写入数据到 A1 单元格QAxObject* cell = sheet->querySubObject("Range(QVariant)", "A1");cell->setProperty("Value", "Qt 写入的数据");// 保存并退出workbook->dynamicCall("SaveAs(const QString&)", "C:\\测试.xlsx");excel->dynamicCall("Quit()");
}

5、高级功能

1)插入单张图片

1.1)通过 Shapes.AddPicture 方法插入图片,需指定坐标、尺寸和链接方式‌。
坐标可通过单元格的 Left 和 Top 属性动态获取‌。

void insertImage(QAxObject* worksheet, const QString& imagePath, int row, int col) {// 获取目标单元格的坐标QAxObject* range = worksheet->querySubObject("Cells(int, int)", row, col);double left = range->property("Left").toDouble();double top = range->property("Top").toDouble();// 插入图片并设置属性QAxObject* shapes = worksheet->querySubObject("Shapes");QAxObject* picture = shapes->querySubObject("AddPicture(const QString&, bool, bool, double, double, double, double)",imagePath,    // 图片路径false,        // LinkToFile: 不链接到外部文件true,         // SaveWithDocument: 图片随文档保存left,         // 左侧位置(单元格左边界坐标)top,          // 顶部位置(单元格顶部坐标)100,          // 宽度(单位:磅)80            // 高度(单位:磅));// 释放资源delete picture;delete shapes;delete range;
}

1.2)动态调整图片位置和大小‌
结合单元格范围计算坐标:

关键字:香港大学深圳医院_网站建设找博网_淘数据官网_百度网站是什么

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: