Qt QXlsx基本使用


1、概述

  QXlsx是一个可以读写Excel文件的库。不依赖office以及wps组件,可以在Qt5支持的任何平台上使用;

使用方式:

  1.QXlsx可以编译为静态库库使用(可以提升项目编译速度,也可以让项目代码量更少,不用一打开工程就几十个文件);
  2.直接将QXlsx.pri加入代码中使用(我比较推荐直接使用源码,因为QXlsx的注释信息基本在cpp文件中,可以通过阅读源码和注释来学习QXlsx的功能,当然,如果你已经熟悉了QXlsx的使用方式那编译成库使用会更方便,可以使工程的代码量变少);

本文中实现的功能:

1 创建一个新的Excel,并具有一个默认的Sheet; 2 打开Excel文件,并判断是否打开成功; 3 分别使用单元格引用和行列号两种方式将数据写入Excel; 4 分别使用单元格引用和行列行两种方式读取Excel所有数据; 5 将Excel数据另存为2.xlsx; 6 释放Excel数据。

2、QXlsx和QAxObject 读写Excel比较
  QAxObject使用需要系统中安装了offie或wps,这种方法不推荐使用;
  因为如果安装了wps,可能部分功能用不了;
  同时安装了office、wps在使用时可能有问题;
  或者电脑里安装了一些pdf阅读器则直接不能使用了;
  QXlsx不依赖于系统环境,使用时打开excel文件将所有数据读入内存,然后就关闭文件了,也不存在文件被占用的情况。

3、准备工作

3.1 下载源码

github/QtExcel/QXlsx

本文中使用到的QXlsx版本为:1.4.3

3.2 使用QXlsx

下载后如下图所示:里面的QXlsx为我们需要用到的源码,其它的为一些官方的示例代码;

打开QXlsx文件夹后如下图所示:通过QXlsx.pro打开可以编译为动态库使用,在程序里加载QXlsx.pri可以直接使用源码。

将QXlsx源码文件夹拷贝到创建的Qt工程路径下(也可以是其它路径)

4、示例代码??

4.1 加载QXlsx源码??

在工程的.pro文件中添加下列代码,

注意QXlsx文件夹的路径改成自己的

1 include($$PWD/QXlsx/QXlsx.pri) # QXlsx源代码 2 INCLUDEPATH += $$PWD/QXlsx

4.2 .h文件

1 #ifndef TEST1_H 2 #define TEST1_H 3 4 #include <QWidget> 5 #include "xlsxdocument.h" 6 7 8 namespace Ui 11 12 class Test1 : public QWidget 13 ; 37 38 #endif // TEST1_H

4.3 pp文件

1 #include "test1.h" 2 #include "ui_test1.h" 3 #include <QDebug> 4 5 QXLSX_USE_NAMESPACE // 添加Xlsx命名空间 6 7 #define EXCEL_NAME "./1.xlsx" // 本demo中用到的excel文件路径文件名 8 9 Test1::Test1(QWidget *parent) : 10 QWidget(parent), 11 ui(new Ui::Test1) 12 17 18 Test1::~Test1() 19 22 23 /** 24 * @brief 创建一个excel文件 25 */ 26 void Test1::on_but_init_clicked() 27 35 else 36 39 } 40 41 /** 42 * @brief 打开文件并判断是否打开成功 43 */ 44 void Test1::on_but_open_clicked() 45 50 if(m_xlsx>load()) // 判断文件是否打开成功(也可以使用isLoadPackage) 51 59 else 60 } 64 65 /** 66 * @brief 使用两种不同的方式将数据写入excel,未指定sheet则默认为sheet1 67 */ 68 void Test1::on_but_write_clicked() 69 87 else 88 91 } 92 93 /** 94 * @brief 读取excel中所有数据 95 */ 96 void Test1::on_but_recv_clicked() 97 114 else 115 118 } 119 qInfo() << data; 120 } 121 122 } 123 124 /** 125 * @brief 将数据另存到2.xlsx 126 */ 127 void Test1::on_but_saveAs_clicked() 128 133 else 134 137 } 138 139 /** 140 * @brief 释放数据 141 */ 142 void Test1::on_but_close_clicked() 143

5、实现效果



上一篇:Qt QLabel字体对齐

下一篇:OpenCV 用bitwise_and裁剪一幅图的一部分


Qt
Copyright © 2002-2019 k262电脑网 www.k262.cn 皖ICP备2020016292号
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!QQ:251442993 热门搜索 网站地图