最近有一个嵌入式Excel表格数据导出的需求:应用软件运行于嵌入式Linux平台上,在设备运行过程中,存储了许多数据,这些数据想以表格的形式导出。
考虑到Windows平台的普遍性,需要将数据以excel表格形式导出,故选择了一个开源库:QtXlsxWriter,本文主要记录其编译构建过程。
从下列地址https://github.com/dbzhang800/QtXlsxWriter获取安装包,将源码包解压缩,目录结构如下图所示:
example目录下存放的是示例Demo。
src目录下存放的是xlsx的源码。
tests目录下存放的是测试工程。
QtXlsxWriter可以通过QtCreator来编译构建,所以我们打开安装在linux平台上的QtCreator,然后使用QtCreator打开QtXlsxWriter项目(选择源码目录下的xxx.pro文件)。选择对应的编译构建套件后,如下图所示:
点击项目管理视图中的顶级目录,单击右键,选择“构建”,即可构建QtXlsxWriter:
编译成功后,将在源码目录的同级下创建构建输出目录,该目录结构如下图所示:
bin :用于存放二进制文件。(该目录为空)
examples:示例Demo的编译构建输出目录。
include:该目录存放关于QtXlsxWriter的头文件:
lib:该目录用于存放QtXlsxWriter的库目录:
mkspecs:该目录是Qt的模块化标识目录,用于向Qt开发环境添加Xlsx:
tests:该目录用于存放测试工程。
在上述目录中,include、lib、mkspecs目录是比较重要的目录。在搭建QtXlsxWriter开发环境时需要使用到。
将构建完成后的目录下的bin、include、lib、mkspecs、src目录拷贝到Qt的安装目录下,以在QtCreator中可以使用Qt+=xlsx加载模块
然后可以编译构建一个demo示例来测试一下。本文以chart为例,其代码如下:
#include#include"xlsxdocument.h" #include"xlsxcellrange.h" #include"xlsxchart.h" usingnamespaceQXlsx; intmain() { //![0]创建xlsx文档对象。向单元格总写入数据 Documentxlsx; for(inti=1;i< 10; ++i) { xlsx.write(i, 1, i * i * i); // A1:A9 xlsx.write(i, 2, i * i); // B1:B9 xlsx.write(i, 3, i * i - 1); // C1:C9 } //![0] //![1]创建图表 Chart *pieChart = xlsx.insertChart(3, 3, QSize(300, 300)); pieChart->setChartType(Chart::CT_Pie); pieChart->addSeries(CellRange("A1:A9")); pieChart->addSeries(CellRange("B1:B9")); pieChart->addSeries(CellRange("C1:C9")); Chart*pie3DChart=xlsx.insertChart(3,9,QSize(300,300)); pie3DChart->setChartType(Chart::CT_Pie3D); pie3DChart->addSeries(CellRange("A1:C9")); Chart*barChart=xlsx.insertChart(23,3,QSize(300,300)); barChart->setChartType(Chart::CT_Bar); barChart->addSeries(CellRange("A1:C9")); Chart*bar3DChart=xlsx.insertChart(23,9,QSize(300,300)); bar3DChart->setChartType(Chart::CT_Bar3D); bar3DChart->addSeries(CellRange("A1:C9")); Chart*lineChart=xlsx.insertChart(43,3,QSize(300,300)); lineChart->setChartType(Chart::CT_Line); lineChart->addSeries(CellRange("A1:C9")); Chart*line3DChart=xlsx.insertChart(43,9,QSize(300,300)); line3DChart->setChartType(Chart::CT_Line3D); line3DChart->addSeries(CellRange("A1:C9")); Chart*areaChart=xlsx.insertChart(63,3,QSize(300,300)); areaChart->setChartType(Chart::CT_Area); areaChart->addSeries(CellRange("A1:C9")); Chart*area3DChart=xlsx.insertChart(63,9,QSize(300,300)); area3DChart->setChartType(Chart::CT_Area3D); area3DChart->addSeries(CellRange("A1:C9")); Chart*scatterChart=xlsx.insertChart(83,3,QSize(300,300)); scatterChart->setChartType(Chart::CT_Scatter); //Willgeneratethreelines. scatterChart->addSeries(CellRange("A1:A9")); scatterChart->addSeries(CellRange("B1:B9")); scatterChart->addSeries(CellRange("C1:C9")); Chart*scatterChart_2=xlsx.insertChart(83,9,QSize(300,300)); scatterChart_2->setChartType(Chart::CT_Scatter); //Willgeneratetwolines. scatterChart_2->addSeries(CellRange("A1:C9")); Chart*doughnutChart=xlsx.insertChart(103,3,QSize(300,300)); doughnutChart->setChartType(Chart::CT_Doughnut); doughnutChart->addSeries(CellRange("A1:C9")); //![1] //![2]将xlsx文档对象保存为Book1.xlsx文件。 xlsx.saveAs("Book1.xlsx"); //![2] //保存为Book2.xlsx文件。 Documentxlsx2("Book1.xlsx"); xlsx2.saveAs("Book2.xlsx"); return0; }
选中项目管理视图中的example目录,依次展开,选择chart目录,右键单击,选中“构建”选项,即可对chart示例演示进行构建。
然后在chart的编译构建目录下,将生成如下文件:
在终端运行一下生成的程序(此处是chart):
运行完成后,将在同级目录下创建两个文件:如下图所示:
注:由于在ubuntu编译构建,没有安装能打开xlsx的应用软件,故将其拷贝到Windows下使用wps打开。打开后图表如下图所示:
以上过程是在Ubuntu18.04下进行的,如果想让QtXlsxWriter运行于嵌入式linux平台上,只需要在QtCreator中选择编译构建套件时,选择对应的交叉编译套件编译,在编译完成后,将构建出的库文件复制到Linux的链接库目录下(一般为/usr/lib),则可以在嵌入式Linux平台上使用QtXlsxWriter了。
审核编辑:刘清
-
QTcreator
+关注
关注
0文章
11浏览量
6823 -
BIN文件
+关注
关注
0文章
26浏览量
8283 -
Linux开发
+关注
关注
0文章
33浏览量
6903
原文标题:Excel表格数据导出,这个库不错
文章出处:【微信号:嵌入式小生,微信公众号:嵌入式小生】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论