NCReport制作报表

来源:互联网 发布:苹果手机淘宝p图软件 编辑:程序博客网 时间:2024/06/04 17:53

前言

有关NCReport的网络上的教程一般是如何生成一个简单的报表,而且讲的也不是很清楚,中文网络上的资料又很匮乏。索性笔者直接根据官网提供的《NCReport Definitive Guide》对如何使用NCReport构建一个像模像样的报表进行讲解。主要是大致翻译一下《NCReport Definitive Guide》。

关于NCReport

这一章将从宏观层面进行讲解,详细描述随着博文会不断深入。
1.如何使用NCReport
(1)生成报表必须定义XML(Extensible Markup Language)作为一个报表模版。XML文件中包含了报表定义位置、尺寸信息,在不实用报表设计师时直接修改XML文件也可以达到对报表修改的目的。
(2)可以使用报表设计师,设计一张报表然后保存为XML文件。
(3)报表数据源可能来自SQL Database、文本、QString、QStringList。
(4)报表可以输出为printer, print preview, postscript, PDF, SVG,Image, HTML, Text。
下图(NCReport结构图)阐释了如何生成一张报表的完整过程:
这里写图片描述

入门

使用教程中的例子,新建一个简单的产品价格表报表。
(1)打开报表设计师,新建一张空白表
这里写图片描述
(2)打开报表和页面设置对话框
这里写图片描述
在这个对话框,我们能够看到如下一些选项:
报表名、报表类型、页面尺寸、页眉页脚设置、页边空白、页面方向等。
文件编码:指的是XML文件的编码格式,除了特别需要选择默认UTF-8即可。
默认字体:这里可以选择宋体等字体。
(3)数据源类型
这里写图片描述

这里写图片描述
说明,
数据ID :这个ID是重要的对于细节部分。
位置类型:我们选择静态,可以在静态文本框中插入静态文本。也可以选择文件,这样要给其一个路径和文件名。

产品列表例子包括下面这些内容:
•type as 0. column
•product name as 1. column
• product code as 2. column
• available as 3. column
• weight as 4. column
• price as 5. column
相应的静态文本为:

A;Magnetometer;D54/78;1;0.778;15.6A;Pressostat CMR;M542;0;2.547;30B;Oil pump Merin;CT-784;1;1.510;17B;Hydraulic pump;RF-800;1;3.981;58B;Erling o-ring;577874;0;2.887;49C;Hydraulic cup;HC55;0;0.435;39C;Ballistic rocket;BV01;1;1.260;157.9C;Wheel WRRT56;Q185/70;1;25.554;199.0

文本数据源列名在一行,例如:type;productname;code;available;weight;price
在这个例子中col0-col5分别用这几个列名。
(4)分配已经定义的数据源到报表,细节选择对应的数据源,选择保存。
这里写图片描述
当增加细节后,可以发现报表也有相应变化如下:
这里写图片描述
(5)几何编辑器
在设计师的右侧,如下图:
这里写图片描述
(6)设计页眉
这里我们增加列名用Label在页面部分。Label条目用于在报表中展示描述信息,如:标题、表头等。Label是静态条目,其内容在设计师或XML外不可以更改。增加Labels,修改文本为列名,并移动到合适的位置。
这里写图片描述
编辑好的页眉如下:
这里写图片描述
(7)修改尺寸
在几何编辑器中可以对页眉、页脚和细节位置进行修改。
(8)插入一条直线
这里写图片描述
(9)设计细节部分
报表的核心内容在细节部分,这是报表最重要的部分,包含了若干行数据源信息。
增加字段信息,col0,col1,col2,col3,col4,col5,这些列号自动索引可以出来。
数据类型:数值或文本,根据情况选择。
这里写图片描述
对报表修改如下:
这里写图片描述
(10)设计页脚
页脚通常用于展示页码信息。在这个例子中我们仅增加爱两个系统变量字段:引用信息和当前页码。
增加系统信息字段appinfo和页码字段pageno如下(这两个字段可以自动索引出来,不用自己起名字):
这里写图片描述
这里写图片描述
(11)在设计师中测试报表
选择快捷方式Ctrl+r,选择NCReport预览执行。
这里写图片描述

将我们设计好的报表用于应用程序

(1)将设计好的报表重命名保存为productlist.xml并重新修改数据源参数,因为我们要将productlist.xml用于程序,其属性要进行修改。
这里写图片描述
添加到软件中
这里写图片描述
代码如下:

    QString data;    data += "A;Magnetometer;D54/78;1;0.778;15.6\n";//数据分号间隔,我们前面选择的方式。    data += "A;Pressostat CMR;M542;0;2.547;30\n";    NCReport *report = new NCReport();    report->setReportFile("productlist.xml");//我们刚才保存的xml文件。    report->addParameter("data", data);//“data”为前面的参数ID,很重要。    //打印机    //report->runReportToPrinter();    //PDF    //QString fileName("ncTest.pdf");    //report->runReportToPDF( fileName);    report->runReportToShowPreview();    if (report->hasError())    {        QMessageBox msgBox;        msgBox.setText(QObject::tr("Report error: ") + report->lastErrorMsg());        msgBox.exec();    }    delete report;

运行结果和我们在设计师中构建的效果一致。
这里写图片描述
提示:由于是试用版,故生成的报表有英文的试用版字样。消除方法,报表保存为PDF后,水印可以使用Acrobat进行删除!

结语

这篇博客是对NCReport设计报表的入门讲解,从报表设计到结合代码显示自己的数据,已经比目前网络上绝大部分讲解详细认真,后面博客会制作更为复杂的报表敬请关注。

0 0