QXlsx(访问Excel)
再Qt中已经有了QAxObject来访问Excel,但访问的是微软的com,只能访问正版的Excl中的 .xls//xlsx ,而且使用起来及其不方便(本人亲测)。
在这里使用QXlsx,能更简单的访问Excel数据,但QXlsx这个类并没有在Qt Creator中,所以需要自己导入。
QXlsx的配置链接(亲测有用):
Qt之QXlsx的使用——完整篇_51CTO博客_qt qxlsx
配置的方式有两种:
第一种:直接在你的编译器上安装Xlsx(需要安装Perl,需要下载QtXlsx源代码)
安装完后在文件中需要添加:
pro文件中添加:
QT +=xlsx
添加头文件:
#include <QtXlsx/QtXlsx>
创建一个项目:
1.pro文件添加:
2. 添加头文件:
3.构造函数中添加内容:
3.运行之后打开项目文件:
4.打开该文件:
第二种方式:
直接在项目中添加源代码(只需要下载QtXlsx源代码)
1.在项目中创建一个文件夹(存放源代码)
2.把下载到的QtXlsx源代码复制到该文件
源代码文件的 src文件,复制该文件
粘贴到项目文件下的Qt_xlsx:
3.在pro文件中引入源代码:
具体的解释为:
./Qt_xlsx/src/xlsx/qtxlsx.pri
- 当前项目下的Qt_xlsx 下的src/xlsx/qtxlsx.pri
- Qt_xlsx 是我们创建的文件名,后面的就不需要修改
4.点击左下方的构建,然后在文件中会显示添加的文件:
5.需要添加头文件:
#include"xlsxdocument.h"
6.在构造函数中添加以下代码:
QXlsx::Document xlsx;xlsx.write("A1", "Hello xlsx!");xlsx.saveAs("Test.xlsx");
6.运行后打开项目运行文件:
以上就是在Qt Creator中如何添加 Qt xlsx。
Qt xlsx的具体用法:
Qt xlsx的文档:Qt XLSX |QtXlsx 0.3 (debao.me)
在这里具体介绍一下Excel中的一些名词:
Workbook(工作簿):打开一个Excel后,Excel中的数据会形成工作簿
工作簿中可能会含有多个表
Worksheet(工作表) :获取工作簿中的一个工作表
Cell(单元格):工作表中的一格
Format(格式):单元格中可以设置格式
Document(文档类)
用来处理Excel文件中的内容
常用的函数:
QXlsx::Document xlsx | 创建一个对象 |
QXlsx::Document xlsx(QString) | 创建并打开指定路径的Excel |
Cell::Document::cellAt(int row,int col) | 返回指定单元格,如果指定位置没有单元格,则该函数返回 0。 |
addSheet(name,type) | 添加一个新表name,格式为type |
copySheet(name1,name2) | 创建name2,复制name1 |
currentSheet() | 返回当前的工作表对像 |
deleteSheet(name) | 删除name这张表 |
insertChart() | 插入图表 |
insertImage() | 插入图像 |
insertSheet(index,name,type) | index处插入name表,名程已使用的话返回false |
mergeCells() | 合并单元格 |
moveSheet() | 移动工作表 |
renameSheet(old,new) | 更换名称 |
read(x,y)使用坐标 read(A1)使用Excel表的位置 |
读取表中的数据 注意:Excel的坐标是从1开始 |
write(x,y,Data)使用坐标 write(A1,Data)使用Excel表的位置 |
写入数据到指定位置 |
save() | 将当前文档保存到文件系统。如果在构建文档时未指定名称,则将使用默认名称“book1.xlsx”。如果保存成功,则返回 true。 |
saveAs(path) | 保存到指定位置 |
selectSheet(name) | 指定当前的表为name |
setColumnWidth() | 设置列的宽度 |
setRowWidget() | 设置行高 |
sheetNames() | 返回全部工作表的名称列表 |
wookbook() | 返回工作簿 |
dimension() | 返回包含单元格数据的区域 |
1.创建一个Qt xlsx对象:
//方法1QXlsx::Document xlsx;//方法2如果要省略QXlsx::using QXlsx::Document;Document xlsx;
2.写入和读取Excel数据
QXlsx::Document xlsx("Test.xlsx");//打开该Excel文件//写入数据for(int i=1;i<10;i++){for(int j=1;j<10;j++){xlsx.write(i,j,i*j*10);}}//读取数据for(int n=1;n<10;n++){for(int m=1;m<10;m++){qDebug()<<xlsx.read(n,m);}}xlsx.save();//保存文件
输出的数据:
注意存储的数据的类型为QVariant
3.输出工作列表:
QXlsx::Document xlsx("Test.xlsx");//打开该Excel文件QStringList list;list=xlsx.sheetNames();//获取工作列表for(QString &data:list){qDebug()<<data;//输出列表}xlsx.selectSheet(tr("Sheet3"));//设置Sheet3为当前列表xlsx.save();//保存文件
4.获取行数和列数:
QXlsx::Document xlsx(excelName);qDebug()<<xlsx.dimension().rowCount();//行数qDebug()<<xlsx.dimension().columnCount();//列数
以上就是Qt 对Excel的基本操作。
还有一些功能这里就不列举了:
点击该链接即可查看:Qt Xlsx C++ Classes | QtXlsx 0.3 (debao.me)
其他的操作可以点击下方链接学习:Qt Xlsx使用教程、Qt操作Excel、Qt生成Excel图表、跨平台不依赖Office_超级大洋葱806的博客-CSDN博客_qtxlsx
QXlsx(访问Excel)相关推荐
- VB 6.0中如何访问EXCEL 2007及EXCEL 2010
问题及分析过程 最近一段时间在使用VB 6.0开发一个OFFICE考试系统,理想的情况是支持WINDOWS XP,WINDOWS 7,WINDOWS 8,Office 2003和Office 2010 ...
- “万能数据库查询分析器” 5.03发布,访问EXCEL将自动为表名前后加上中括弧
"万能数据库查询分析器" 5.03发布,访问EXCEL将自动为表名前后加上中括弧 1 引言 中国本土程序员马根峰推出的个人作品----万能数据库查询分析器 ...
- java通过桥访问excel_通过jdbc-odbc桥来访问excel文件
通过jdbc-odbc桥来访问excel文件 pcera 说是对文件的操作有点牵强附会,毕竟这是对单一类型的文件具体操作 . ...
- MFC通过sql访问excel的方法
1.首先检查安装的驱动中是否有excel,代码如下: CString CAbcd1Dlg::GetExcelDriver() { TCHAR sBuf[1000], *p=sBuf; WORD sBu ...
- php 不能直接访问数据库,PHP能不能像访问呢数据库那样访问Excel?
PHP能不能像访问呢数据库那样访问Excel? 关注:123 答案:3 手机版 解决时间 2021-02-15 19:08 提问者夢岭杺 2021-02-15 06:49 PHP能不能像访问呢数据 ...
- .net 使用OLEDB访问excel
.net 使用OLEDB访问excel 基本步骤 安装相关的dll,到Microsoft上下载,具体网址为:https://www.microsoft.com/zh-CN/download/detai ...
- oleDbCommand访问Excel
oleDbCommand访问Excel: _oleCmdSelect = new OleDbCommand("SELECT * FROM [Sheet1$A2:A5]", _ole ...
- QXlsx读写Excel表格
QXlsx读写Excel表格 1.下载qtxlsxwriter 下载链接 2.将src文件夹下的xlsx放到你的项目中 3.项目文件.pro中添加 include(../xlsx/qtxlsx.pri ...
- c访问excel 密码 api_管理EXCEL的5种服务使用渠道
管理Excel作为一个企业信息化SaaS服务,用户可以在不同的环境下使用针对性的客户端使用相关服务. 目前,提供Excel/WPS插件.Windows版本.微信小程序.安卓APP.网页浏览器.开放AP ...
最新文章
- AngryTask - 基于伪 scrum 的个人项目开发产品
- VueX(Vue状态管理模式)
- Why docker command need sudo? | 为什么运行docker命令需要sudo?
- 《C++ Primer 第五版》(第1~6章总结)
- Mac电视投屏工具:Mirror for Any Device for Mac
- JWT token信息保存
- 三星Galaxy Note20系列价格曝光:大小杯差距明显
- html怎么定位到不同的页面,html页面定位到指定位置的4种实现方式
- 生产环境MySQL 5.5.x单机多实例配置实践
- java 计算两个日期之间的月份_Java 8计算两个日期之间的月份
- java雪花纷飞_终于理解白雪比喻句
- linux 格式化磁盘失败,linux格式化磁盘出错
- java 公共方法是什么意思_在java中公共/私有/其他方法的含义是什么意...
- OpenCV黑魔法之隐身衣 | 附源码
- 道格拉斯普克算法(简化线段点)
- 安装fluxion 报错 E: 无法定位软件包 pyrit
- cas:27025-41-8 Glutathione oxidized氧化型谷胱甘肽 活性氧抑制剂
- win10中插入的耳机没有耳麦如何使用笔记本本身的麦克风
- 美团校招php笔试题,【美团点评】2020校招数据分析方向笔试题
- R语言绘图添加箭头标记、绘制连接两点的线段
热门文章
- Pie-1-南丁格尔玫瑰图-中心带文字
- 南方人和北方人的区别?如何区分南方人和北方人?
- 国产软件很流氓?不,这些国产软件良心且实用,别让它们寒心
- 爱情在患得患失时最美丽
- IE8:SCRIPT438: 对象不支持“play”属性或方法,audio.play()无法使用
- 喜大普奔,又一国标正式进入国际标准
- 设计模式 - 漫谈软件编程背后的系统化思维
- Python爬虫 - 统计自己读过小说的字数
- linux云服务器配置JDK教程(博主阿里云,腾讯云亲测成功案例教程)
- UI设计师未来的发展趋势如何?前景好吗?