用QT导出Excel表格
用QT导出Excel表格
前景描述:作者的需求是要在qt开发环境下能把数据导出到Excel表格,原本是打算是用Qt-QAxObject(QAxObject
是Qt提供的包装COM组件的类,通过COM操作Excel需要使用QAxObject类,使用此类还需要在pro文件增加“QT += axcontainer”)来做,但发现用这个做的话用户想生成Excel必须电脑装有Office,于是决定用qtxlsx来做。
概述:QtXlsx是功能非常强大和使用非常方便的操作excel类库。包括对excel数据读写、excel数据格式设置及在excel里面根据数据生成各种图表,但原本的QT没有这个库,所以要把这个库安装到QT里。安装的时候需要构建src文件,而构建src文件需要用到perl,下面直接开始具体操作。
安装步骤:
1、下载安装perl
这里的话你的QT是多少位就装多少位的perl
2、下载Qtxlsx代码包
QTXLSX代码包
3、解压代码包
4、打开qt命令行工具
5、进入到你代码包的解压目录
6、
1.qmake(生成makefile文件)
2.mingw32-make(编译源码)
3.mingw32-make install(编译安装)
7、 在pro文件添加 QT += xlsx
,至此,你的QT工程就可以调用QTXlsx库进行Excel表格操作
8、头文件 #include <QtXlsx>
9、qtxlsx.cpp 文件
#include <QString.h>
#include “qtxlsx.h”
#include
#include
#include
#include
#include “fileutil.h”
using namespace std;
QString xlsx_name[9]={“项目名”,“人名”,“二级目录”,“三级目录”,“四级目录”,“五级目录”,“六级目录”,“七级目录”,“八级目录”};
CreateExcel::CreateExcel()
{mRow=2;mColumn=0;mNodecount=0;mMaxrow=0;mMaxcolumn=0;mPxlsx = NULL;}void CreateExcel::initExcel() //初始化
{if(NULL!=mPxlsx){ delete mPxlsx;mPxlsx=NULL;}mPxlsx = new QXlsx::Document;QXlsx::Document qtexcel;mFormat1.setFontSize(12); //设置字体大小mFormat1.setFontName("宋体"); //设置字体格式mFormat1.setVerticalAlignment(mFormat1.AlignVCenter); //上下对齐mFormat1.setBorderStyle(mFormat1.BorderThin); //设置边框样式mFormat2.setFontSize(12);mFormat2.setFontName("宋体");mFormat2.setVerticalAlignment(mFormat1.AlignVCenter);mFormat2.setPatternBackgroundColor(QColor(250,80,60));mFormat2.setBorderStyle(mFormat2.BorderThin);for(int i=1;i<20;i++){mPxlsx->setColumnWidth(i,16); //设置列宽}for(int i=4;i<20;i=i+2)mPxlsx->setColumnWidth(i,6);}void CreateExcel::getLeafNode(TreeNode *ptr) //获取叶子节点数
{TreeNode *ptr1=ptr;if(ptr1!=NULL){for(int t=0;t<ptr1->children.size();t++){getLeafNode(ptr1->children[t]);}if(ptr1->children.size()==0)mNodecount++;}
}void CreateExcel::outputExcel(TreeNode *p) //输出Excel表格
{if(p!=NULL){if(mColumn>2)mColumn=mColumn+2;elsemColumn++;mNodecount=0;getLeafNode(p); //获取叶子节点数if(mMaxrow<mRow)mMaxrow=mRow;if(mMaxcolumn<(mColumn+1))mMaxcolumn=mColumn+1;mPxlsx->write(mRow,mColumn,QString::fromStdString(p->name), mFormat1); //写出各级目录名mPxlsx->mergeCells(QXlsx::CellRange(mRow,mColumn,mRow+mNodecount-1,mColumn)); //合并单元格if(mColumn<4) //写入第一行名字mPxlsx->write(1,mColumn,xlsx_name[mColumn-1], mFormat1);elsemPxlsx->write(1,mColumn,xlsx_name[(mColumn+1)/2], mFormat1);if(mColumn>2) //写出各级目录状态{if(p->flag!=0)mPxlsx->write(mRow, mColumn+1, "√", mFormat1);elsemPxlsx->write(mRow, mColumn+1, "×", mFormat2);mPxlsx->mergeCells(QXlsx::CellRange(mRow,mColumn+1,mRow+mNodecount-1,mColumn+1));}for(int t=0;t<p->children.size();t++) //前序遍历的关键循环{outputExcel(p->children[t]);mRow++;}if(mColumn>4)mColumn=mColumn-2;elsemColumn--;if(p->children.size()!=0) //如果是自身这一层级目录遍历完,行减一mRow--;}
}void CreateExcel::resetExcel()
{mPxlsx->setRowFormat(1,mMaxrow,mFormat1);mRow=2;mColumn=0;mMaxrow=0;
}bool CreateExcel::saveExcel(QString foldername,QString projectname) //保存到指定文件夹,用项目名作为文件名
{ QDir dir;FileUtil fileJudge;if(!(fileJudge.isPathExist(foldername)))dir.mkdir(foldername);QString str1=foldername+"/"+projectname+".xlsx";return mPxlsx->saveAs(str1);
}
10、qtxlsx.h 文件
#ifndef QXLSX_H
#define QXLSX_H#include "examiner.h"
#include <QtXlsx>class CreateExcel
{
public:CreateExcel();void initExcel();void outputExcel(TreeNode *);bool saveExcel(QString,QString);void getLeafNode(TreeNode *);void resetExcel();private:int mRow;int mColumn;int mNodecount;int mMaxrow;int mMaxcolumn;QXlsx::Document* mPxlsx;QXlsx::Format mFormat1;QXlsx::Format mFormat2;
};
#endif // QXLSX_H
用QT导出Excel表格相关推荐
- Qt:Qt导出Excel表格
借鉴参考文献中的内容,并将其封装成一个ExcelExporter类,除了实现一些基本的写数据的功能,还增加了设置单元格样式.合并单元格的功能.在Qt中使用QAxObject类访问Com组件对象,需要在 ...
- linux qt写入excel文件内容,Qt 读取Excel表格数据 生成Excel表格并写入数据
Qt 读取Excel表格数据 生成Excel表格并写入数据 Qt 读取Excel表格数据 生成Excel表格并写入数据 修改.pro文件,增加 axcontainer QT += axcontaine ...
- elementui中有导出组件吗_Element-ui组件库Table表格导出Excel表格
安装 npm install --save xlsx file-saver 两个插件的详细地址在下面 https://github.com/SheetJS/js-xlsx https://github ...
- 使用NPOI将数据库里信息导出Excel表格并提示用户下载
使用NPOI进行导出Excel表格大家基本都会,我在网上却很少找到导出Excel表格并提示下载的 简单的代码如下 1 //mvc项目可以传多个id以逗号相隔的字符串2 public ActionRes ...
- java中使用jxl导出Excel表格详细通用步骤
该方法一般接收两个参数,response和要导出的表格内容的list. 一般我们将数据库的数据查询出来在页面进行展示,根据用户需求,可能需要对页面数据进行导出. 此时只要将展示之前查询所得的数据放入s ...
- php 导出csv设置列宽度,php数据库导出excel表格数据-php从数据库导出csv格式的Excel表格是,字段本身就......
PHP如何将查询出来的数据导出成excel表格(最好做... $objPHPExcel->getActiveSheet()->getDefaultColumnDimension(A)-&g ...
- java 导出excel教程_Java导出Excel表格
Java导出Excel表格 导出Excel表格需要一个poi-3.9.jar的包,该包在网上可以找到. 第一步,创建Excel对象. HSSFWorkbook workbook = new HSSFW ...
- com.alibaba.easyexcel导出指定的列_使用Python导入导出Excel表格
这篇文章的目的是讲解使用python导入导出Excel表格,目前还不涉及数据处理,主要实现为数据的展示. 第一步,准备材料 python3.8的安装包 一个Excel表格 第二步,安装软件 pytho ...
- 使用python将数据导出excel表格
python可用于数据分析,有时候获得了数据需要导出以作其他作用.本文就介绍python导出excel表格的方法. 导出excel表格,python提供了两个库:xlwt,xlrd.本文只讨论 ...
最新文章
- 【GLib】GLib学习笔记(三):gtypes、garray、gerror、goption
- 吴恩达老师,被曝靠「教书」实现首个IPO上市,估值50亿美元
- 历史命令history
- ConcurrentHashMap的源码分析-数据迁移阶段的实现分析
- qpython numpy_Python-Numpy全面精简教程
- 【Python可视化】利用Numpy绘制各种统计图表
- 如何安装mysql 匹配_学习笔记----安装MySQL
- 【python】常用内建模块
- 我的第一句__asm 语句[很简单]
- 中国塑料箱市场趋势报告、技术动态创新及市场预测
- 手机wps怎么设置语言_怎么使用手机对路由器进行设置
- java脚本计算器按钮无反应_2020年3月份最新计算机语言排行,20种语言争锋相对Java依旧飘逸...
- 33岁学做软件测试还来得及? 4个建议送给你!
- from StyleFrame import StyleFrame, Styler ModuleNotFoundError: No module named ‘StyleFrame‘
- ie8打不来ftp文件服务器,在IE8、IE9中访问FTP无法直接显示文件夹视图解决办法
- 使用ZedGraph记录(原创)
- 2021第六届数维杯大学生数学建模竞赛题目
- 原生JS实现7中简单效果
- PS 2019 Mac版 自学入门系列(十)—— 自定义黑白
- 计算机 总线带宽计算,电脑各种硬件带宽的计算
热门文章
- html将多个单元格合并,如何将多个单元格内容合并在一起
- 推动物流行业智能升级 紫光展锐携手京东物流打造5G全连接智能仓储
- 653 Android 8,诺基亚X6手机迎来新的系统固件更新 提升Android 8.1系统流畅性
- C语言最大子序列和三种常用解决方法
- goland 修改文件的关联类型
- 1分钟做出一个可爱鬼畜动图!
- java实现读取txt文件和将内容写入txt文件
- 语言学句法分析树形图怎么画_英语语言学 句法树形图 两句话分析
- Java 实现向邮箱发送邮件及点击邮件激活网页打不开等问题,常用作注册账号及激活账号(测试为qq邮箱)
- 局域网上网行为管理系统可以为企业带来什么优势?