【QT Excel】读写文件及踩坑处理

QT excel编程小结

excel基本结构

  1. excel当前工作文档
  2. excel的工作簿:works
  3. excel的表格集(1,2,3不是从零开始的):sheet
  4. excel的每个单元格:cell

excel自动化办公接口VBA(Visual Basic for Applications)

是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。它也可说是一种应用程式视觉化的 Basic 脚本。

调用方法用dynamicCall,获取属性或获取返回值用querySubObject()

查看操作office所需调用的函数https://docs.microsoft.com/zh-cn/office/vba/api/

QT 操作excel流程

QT工程准备

QT想要操作excel需要使用一个模块就是axcontainer模块,他和GUI,network一样,都是要自行添加在。pro文件中。部分材料中提到,商业版QT才有axcontainer,这个时候可以使用CONFIG += qaxcontainer命令(QT4的模块),我在使用CONFIG += qaxcontainer后,QT += axcontainer也可以使用了,目前不知道为什么。

#-------------------------------------------------
#
# Project created by QtCreator 2022-02-21T10:36:47
#
#-------------------------------------------------

QT       += core gui
#QT += core axcontainer
QT += axcontainer
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = writeExcel
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

CONFIG += c++11
#CONFIG += qaxcontainer
SOURCES += \
        main.cpp \
        mainwindow.cpp

HEADERS += \
        mainwindow.h

FORMS += \
        mainwindow.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

操作excel的的方式

想要访问excel,需要通过QAxobject来操作因此在头文件应添加

#include <QAxObject>
#include <QAxWidget>
#include <QFileDialog>
class{
private:
    QAxObject* myexcel;//excel 应用程序指针
    QAxObject* myworks;//工作簿集指针
    QAxObject* workbook;//工作簿指针
    QAxObject* mysheets;//电子表格集
}

若要操作excel我们应该首先创建一个Excel进程

myexcel = new QAxObject("Excel.Application");

随后获取当前excel进程的工作簿集

myworks = myexcel->querySubObject("WorkBooks");

添加一个工作簿

myworks->dynamicCall("Add");

获取当前活动的工作簿

workbook = myexcel->querySubObject("ActiveWorkBook");

添加一个表格集

mysheets->dynamicCall("Add");

指向当前活动表格

QAxObject *sheet = workbook->querySubObject("ActiveSheet");

给表格命名

sheet->setProperty("Name", "writeQt");

指向特定单元格

QAxObject *cell = sheet->querySubObject("Range(QVariant, QVariant)", "C3");

单元格写入内容

cell->dynamicCall("SetValue(const QVariant&)", QVariant(inStr));

指向特定表格集

sheet = mysheets->querySubObject("Item(int)", i);

保存表格

workbook->dynamicCall("SaveAs(const QString&)", "./Qt5.xlsx");

打开表格

myworks->dynamicCall("Open(const QString&)", "./Qt5.xlsx");

读取表格内容

QString outStr = cell->dynamicCall("Value2()").toString();

指向第二个表格

sheet = workbook->querySubObject("Sheets(int)", 2);

QAxBase: Error calling IDispatch member ActiveSheet: Unknown error

我这边出现这个主要是在操作表的时候,Excel表格突然弹出激活、许可协议等信息等造成的。激活工具激活office后就好了。

QAxBase: Error calling IDispatch member SaveAs: Exception thrown by server

​ Code : -2146827284
​ Source : Microsoft Excel
​ Description: Microsoft Excel ???D://24ED7000?? ???:
​ Help : xlmain11.chm

出现错误的原因是因为我对这个类的调用过程中,对文件保存路径出现错误,解决方式保存在Excel默认保存路径

exportexcel.newExcel("./text.xls");          //将保存在调用的Excel功能的默认保存文件夹

参考:
QT5开发及实例 陆文周
https://blog.csdn.net/y396397735/article/details/78306440
https://blog.csdn.net/qq_41488943/article/details/102838380

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt Excel读写库是为了方便在Qt应用程序中实现与Excel文件读写操作而设计的一个库。它提供了一套简单易用的函数和类,可以帮助开发者轻松地读取、写入、修改Excel文件的内容。 Qt Excel读写库可以实现各种常见的Excel操作,比如读取单元格的数值、文本、日期等数据,修改单元格的内容,新增、删除、复制、移动工作表,设置样式和格式,创建图表等等。开发者只需要引入相应的头文件,并在代码中使用库中提供的函数和类,即可完成对Excel文件读写操作。 使用Qt Excel读写库,开发者可以方便地将Qt应用程序与Excel文件进行数据交互。比如,可以通过读取Excel中的数据,将其展示在Qt应用程序的界面上;同时,可以在Qt应用程序中生成数据,并将数据写入Excel表格中,以实现数据的导出等功能。 Qt Excel读写库的优点在于其简洁易用、功能丰富。它不仅提供了基本的读写功能,还支持复杂的Excel操作,如合并单元格、设置列宽、行高等。此外,Qt Excel读写库在性能方面也表现出色,能够处理大量数据,确保数据读写的效率和稳定性。 总的来说,Qt Excel读写库是一个强大而实用的工具,在Qt应用程序与Excel文件之间建立了方便快捷的桥梁,为开发者提供了丰富的功能和灵活的操作,使得Excel数据的读取、写入和处理变得更加简单高效。 ### 回答2: QT Excel读写库是一种用于在QT框架下进行Excel文件读写操作的工具库。该库具有方便易用的特点,能够帮助开发人员快速进行Excel文件的读取和写入操作。 首先,QT Excel读写库提供了一系列简洁明了的API,使得开发人员可以轻松地打开Excel文件,并读取其中的数据。通过该库,可以直接访问Excel文件中的单元格、行和列,并获取相应的数值、文本、日期等信息。这大大简化了开发人员处理Excel文件的过程。 其次,QT Excel读写库还支持对Excel文件进行写入操作。通过该库,开发人员可以方便地将数据写入到Excel文件的特定位置,或者新增行或列,并在其中填入数据。此外,该库还支持对单元格样式的设置,使得生成的Excel文件更具美观性和可读性。 除此之外,QT Excel读写库还能够处理一些复杂的Excel文件操作,例如合并单元格、插入图片、修改工作表名称等。这些功能的支持使得开发人员能够更加灵活地处理Excel文件,满足不同的需求。 总之,QT Excel读写库是一款功能强大、易于使用的工具库,可以帮助开发人员轻松进行Excel文件的读取和写入操作,大大提高了开发效率,并且可以应用于各种需要处理Excel文件的项目中。 ### 回答3: Qt Excel读写库是一个基于Qt框架的工具库,专门用于在Qt应用程序中实现对Excel文件读写操作。该库提供了一系列的类和函数,方便开发者进行Excel数据的导入和导出操作。 Qt Excel读写库的主要特点包括: 1. 支持多种Excel文件格式:该库可以读写常见的Office Excel文件格式,包括xls和xlsx格式。无论是旧版的Excel文件,还是较新的Excel文件,都可以进行读写操作。 2. 简洁易用的API:库提供了一组简洁易用的API,使开发者能够轻松地实现Excel文件读写操作。开发者只需要调用相应的函数,即可实现打开、保存、读取、写入Excel文件的功能。 3. 支持各种数据类型:Qt Excel读写库支持读写Excel文件中各种常见的数据类型,包括整型、浮点型、字符串等。开发者可以方便地读取和写入不同类型的数据,满足各种数据处理需求。 4. 支持自定义样式:除了读写数据之外,库还支持设置 Excel 文件的各种样式,如字体、颜色、边框等。开发者可以根据需要设置单元格的样式,使得生成的 Excel 文件更具有可读性和美观性。 5. 跨平台支持:Qt Excel读写库基于Qt框架开发,因此可以在多个平台上运行。不论是Windows、Linux还是MacOS等,开发者都可以方便地使用该库进行 Excel 文件读写操作。 总结起来,Qt Excel读写库是一个功能强大、易于使用且跨平台的工具库,可以方便地在Qt应用程序中进行 Excel 文件的读取和写入操作,适用于各种需要处理 Excel 数据的场景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值