用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表格相关推荐

  1. Qt:Qt导出Excel表格

    借鉴参考文献中的内容,并将其封装成一个ExcelExporter类,除了实现一些基本的写数据的功能,还增加了设置单元格样式.合并单元格的功能.在Qt中使用QAxObject类访问Com组件对象,需要在 ...

  2. linux qt写入excel文件内容,Qt 读取Excel表格数据 生成Excel表格并写入数据

    Qt 读取Excel表格数据 生成Excel表格并写入数据 Qt 读取Excel表格数据 生成Excel表格并写入数据 修改.pro文件,增加 axcontainer QT += axcontaine ...

  3. elementui中有导出组件吗_Element-ui组件库Table表格导出Excel表格

    安装 npm install --save xlsx file-saver 两个插件的详细地址在下面 https://github.com/SheetJS/js-xlsx https://github ...

  4. 使用NPOI将数据库里信息导出Excel表格并提示用户下载

    使用NPOI进行导出Excel表格大家基本都会,我在网上却很少找到导出Excel表格并提示下载的 简单的代码如下 1 //mvc项目可以传多个id以逗号相隔的字符串2 public ActionRes ...

  5. java中使用jxl导出Excel表格详细通用步骤

    该方法一般接收两个参数,response和要导出的表格内容的list. 一般我们将数据库的数据查询出来在页面进行展示,根据用户需求,可能需要对页面数据进行导出. 此时只要将展示之前查询所得的数据放入s ...

  6. php 导出csv设置列宽度,php数据库导出excel表格数据-php从数据库导出csv格式的Excel表格是,字段本身就......

    PHP如何将查询出来的数据导出成excel表格(最好做... $objPHPExcel->getActiveSheet()->getDefaultColumnDimension(A)-&g ...

  7. java 导出excel教程_Java导出Excel表格

    Java导出Excel表格 导出Excel表格需要一个poi-3.9.jar的包,该包在网上可以找到. 第一步,创建Excel对象. HSSFWorkbook workbook = new HSSFW ...

  8. com.alibaba.easyexcel导出指定的列_使用Python导入导出Excel表格

    这篇文章的目的是讲解使用python导入导出Excel表格,目前还不涉及数据处理,主要实现为数据的展示. 第一步,准备材料 python3.8的安装包 一个Excel表格 第二步,安装软件 pytho ...

  9. 使用python将数据导出excel表格

      python可用于数据分析,有时候获得了数据需要导出以作其他作用.本文就介绍python导出excel表格的方法.   导出excel表格,python提供了两个库:xlwt,xlrd.本文只讨论 ...

最新文章

  1. 【GLib】GLib学习笔记(三):gtypes、garray、gerror、goption
  2. 吴恩达老师,被曝靠「教书」实现首个IPO上市,估值50亿美元
  3. 历史命令history
  4. ConcurrentHashMap的源码分析-数据迁移阶段的实现分析
  5. qpython numpy_Python-Numpy全面精简教程
  6. 【Python可视化】利用Numpy绘制各种统计图表
  7. 如何安装mysql 匹配_学习笔记----安装MySQL
  8. 【python】常用内建模块
  9. 我的第一句__asm 语句[很简单]
  10. 中国塑料箱市场趋势报告、技术动态创新及市场预测
  11. 手机wps怎么设置语言_怎么使用手机对路由器进行设置
  12. java脚本计算器按钮无反应_2020年3月份最新计算机语言排行,20种语言争锋相对Java依旧飘逸...
  13. 33岁学做软件测试还来得及? 4个建议送给你!
  14. from StyleFrame import StyleFrame, Styler ModuleNotFoundError: No module named ‘StyleFrame‘
  15. ie8打不来ftp文件服务器,在IE8、IE9中访问FTP无法直接显示文件夹视图解决办法
  16. 使用ZedGraph记录(原创)
  17. 2021第六届数维杯大学生数学建模竞赛题目
  18. 原生JS实现7中简单效果
  19. PS 2019 Mac版 自学入门系列(十)—— 自定义黑白
  20. 计算机 总线带宽计算,电脑各种硬件带宽的计算

热门文章

  1. html将多个单元格合并,如何将多个单元格内容合并在一起
  2. 推动物流行业智能升级 紫光展锐携手京东物流打造5G全连接智能仓储
  3. 653 Android 8,诺基亚X6手机迎来新的系统固件更新 提升Android 8.1系统流畅性
  4. C语言最大子序列和三种常用解决方法
  5. goland 修改文件的关联类型
  6. 1分钟做出一个可爱鬼畜动图!
  7. java实现读取txt文件和将内容写入txt文件
  8. 语言学句法分析树形图怎么画_英语语言学 句法树形图 两句话分析
  9. Java 实现向邮箱发送邮件及点击邮件激活网页打不开等问题,常用作注册账号及激活账号(测试为qq邮箱)
  10. 局域网上网行为管理系统可以为企业带来什么优势?