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

querySubObject(“Cells(int,int)“, j,i)->property(“Value“)读不到数据问题

在使用qt读取Excel文件内容的时候,使用下列方式:

worksheet->querySubObject("Cells(int,int)", j,i)->property("Value").toString();

不会报错,但读取不到数据。多次尝试发现应该将property改为dynamicCall

下面是用qt读取excel文件内容的实例。

读取方式为按列读取,以QVector<QVector<QString>>形式存储数据。

void MainWindow::getExcelContent(QVector<QVector<QString>> &result, QStringList filePathes)
{QAxObject *excel = NULL;QAxObject *workbooks = NULL;QAxObject *workbook = NULL;foreach (const QString &filePath, filePathes) {CoInitializeEx(NULL, COINIT_MULTITHREADED);excel = new QAxObject("Excel.Application");QAxObject *worksheet = workbook->querySubObject("WorkSheets(int)", 1);//读取第一个表QAxObject *usedRange = worksheet->querySubObject("UsedRange");//有数据的矩形区域QAxObject * rows = usedRange->querySubObject("Rows");QAxObject * columns = usedRange->querySubObject("Columns");int Rows = rows->property("Count").toInt();int Cols = columns->property("Count").toInt();//按照列方式读取数据for(int i=1;i<=Cols; ++i){QVector<QString> vecDataRow;for(int j=1;j<=Rows;++j){QString txt = worksheet->querySubObject("Cells(int,int)", j,i)->dynamicCall("Value").toString(); //获取单元格内容vecDataRow.append(txt);}result.push_back(vecDataRow);}workbook->dynamicCall("Close()");excel->dynamicCall("Quit()");if(excel){delete excel;excel = NULL;}}
}

下面是打开文件方式,其中有单选格式方式打开文件和多选格式选择打开文件。 

QString filePath = QFileDialog::getOpenFileName(this, QStringLiteral("选择Excel文件"),"",QStringLiteral("Excel file(*.xls *.xlsx)"));if(filePath.isEmpty())return;
filePathes = QFileDialog::getOpenFileNames(this, tr("Open File"),"D:/",tr("Excel files(*.xls *.xlsx);;CSV files (*.csv)"));
http://www.lryc.cn/news/100934.html

相关文章:

  • AutoSAR系列讲解(实践篇)10.2-EcuM的上下电流程
  • 科研院所用泛微搭建信创办公平台,统一办公,业务融合,安全便捷
  • 基于LoRA进行Stable Diffusion的微调
  • C++STL序列式容器——list容器及其常用操作(详解)
  • 【雕爷学编程】MicroPython动手做(15)——掌控板之AB按键2
  • Spring Boot中整合MyBatis(基于xml方式基于注解实现方式)
  • ChatGPT漫谈(三)
  • 树、二叉树(C语言版)详解
  • vue中Cascader 级联选择器实现-修改实现
  • C语言实现三子棋游戏
  • 机器学习深度学习——softmax回归从零开始实现
  • Windows如何安装Django及如何创建项目
  • 在CSDN学Golang云原生(监控解决方案Prometheus)
  • 双重for循环优化
  • golang利用go mod巧妙替换使用本地项目的包
  • 使用 docker 一键部署 MySQL
  • MyBatis-Plus 查询PostgreSQL数据库jsonb类型保持原格式
  • Linux操作系统1-命令篇
  • opencv-24 图像几何变换03-仿射-cv2.warpAffine()
  • 前端常用的条件限制方法小笔记
  • 【LeetCode 算法】Minimum Operations to Halve Array Sum 将数组和减半的最少操作次数-Greedy
  • Doc as Code (3):业内人士的观点
  • 【Kafka】消息队列Kafka基础
  • Java的第十五篇文章——网络编程(后期再学一遍)
  • 【深度学习】High-Resolution Image Synthesis with Latent Diffusion Models,论文
  • 前端学习——Vue (Day6)
  • STM32MP157驱动开发——按键驱动(tasklet)
  • PostgreSQL构建时间
  • 2023-将jar包上传至阿里云maven私有仓库(云效制品仓库)
  • 嵌入式linux之OLED显示屏SPI驱动实现(SH1106,ssd1306)