前言

有关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.6
A;Pressostat CMR;M542;0;2.547;30
B;Oil pump Merin;CT-784;1;1.510;17
B;Hydraulic pump;RF-800;1;3.981;58
B;Erling o-ring;577874;0;2.887;49
C;Hydraulic cup;HC55;0;0.435;39
C;Ballistic rocket;BV01;1;1.260;157.9
C;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设计报表的入门讲解,从报表设计到结合代码显示自己的数据,已经比目前网络上绝大部分讲解详细认真,后面博客会制作更为复杂的报表敬请关注。

NCReport制作报表相关推荐

  1. 通过PRINT过程制作报表

    通过PRINT过程制作报表 PRINT过程是SAS中用于输出数据集内容的最简单常用的过程,它可将选择的观测和字段以简单的矩形表格形式输出. 1.1 制作简单报表 使用PRINT过程最简单的语法形式如下 ...

  2. vb.net怎么调用fastreport报表_零编码制作报表可能吗?

    要回答这个问题,首先要明确啥程度算"零编码"? 以 Excel 为例,如果把写 Excel 公式(包括复杂一些的)看做零编码:而把写 Excel VBA 看做编码的话, 报表开发是 ...

  3. [转]简单介绍如何用Reporting Service制作报表

       1) 在安装好Reporting Service后,打开Visual studio .net ,选择新建项目,选择建立商业智能项目,选择新建一个报表项目,命名为reportservice1,再选 ...

  4. Apache POI组件操作Excel,制作报表(四)

    Apache POI组件操作Excel,制作报表(四) 博客分类: 探索实践 ExcelApacheSpringMVCServlet  上一篇我们介绍了如何制作复杂报表的分析和设计,本篇结合Sprin ...

  5. 如何设计报表?手把手教你5步轻松制作报表

    报表就是报告状况的表,是通过表格.图表来展示指标,从而方便业务部门掌握业务的情况. 每天汇总更新的报表叫做日报,每周汇总更新的报表叫做周报.例如,下图是数据分析学院的报表,通过该报表可以了解新老用户的 ...

  6. Python办公自动化:制作报表并发送到邮箱

    大家好,我是辰哥(文末送书) 作为数据分析师,我们需要经常制作统计分析图表.但是报表太多的时候往往需要花费我们大部分时间去制作报表.这耽误了我们利用大量的时间去进行数据分析.但是作为数据分析师我们应该 ...

  7. iReport制作报表

    文章将会涉及3个方面的内容: 第一部分:使用iReport制作报表的详细过程(Windows环境下) 第二部分:使用Jasperreport作为报表控件开发胖客户端报表应用 第三部分:使用Jasper ...

  8. 第一部分:使用iReport制作报表的详细过程(Windows环境下)

    第一部分:使用iReport制作报表的详细过程(Windows环境下) 提示:在有些板块,文中的图片看不到,建议到我的blog浏览文章:http://blog.csdn.net/jemlee2002/ ...

  9. 利用SAS软件制作报表的常用手法

    如何利用SAS 软件制作报表常用的技巧 1.先设计好你的报表格式 2.用SAS过程先初步得到这些结果 1. 比如可以用means过程.univariate过程得到一些描述统计量: 2. 可以用mean ...

最新文章

  1. 取出json中的数据php,怎么从Json中取出数据放到一个新组中
  2. 【音频处理】从时域和频域上分别改变音频的响度
  3. 学数据库你竟然不用用JAVA写代码,可惜你遇到了我! JAVA连接数据库(JDBC)的安装使用教程
  4. Python 计算总分数和平均分 - Python零基础入门教程
  5. 作者:周武柏,男,美国佛罗里达国际大学计算机科学博士生,南京邮电大学计算机学院大数据项目组成员。...
  6. 深度学习:语言模型的评估标准
  7. github常用命令汇总
  8. DPDK QOS 3 -- rte meter令牌桶的实现
  9. acid事务 mysql_MySQL 事务ACID特性
  10. java中怎么判断字符串的长度_java怎么判断字符串的字符串的长度
  11. 学数据分析到底要不要掌握Linux-Python基础前传(2)
  12. 形容java工作者的句子_关于形容工作态度的句子
  13. 惠普HP LaserJet Pro P1106 打印机驱动
  14. 论DNS地址8.8.8.8和114.114.114.114
  15. 线性规划与非线性规划的求解
  16. 2022年国自然正式放榜,如何解读基金立项结果?(附查询方法)
  17. Python育儿系列-python生成竖式运算
  18. 开源实时消息推送系统 MPush
  19. 从火星的古海洋,读懂蓝星的数据湖之变
  20. 动画和图形:画布和可绘制对象

热门文章

  1. outlook计算机应用操作题,《计算机应用基础》Internet应用题型专项练习
  2. 命名实体识别_CodingPark编程公园
  3. 【stm32】利用单片机实现小车直线和圆弧的识别
  4. 腾讯地图JavaScript API GL实现文本标记的碰撞避让
  5. 【Android】提取Android中已安装app的apk
  6. 人脸识别的时候,一定要穿上衣服啊!
  7. 关于本次磁导航手术项目的编程记录
  8. Python+selenium自动化之26----等待
  9. 安徽省计算机科学与技术专业大学排名,计算机科学与技术专业大学排名
  10. 浏览器提示“您的时钟快了”,计算机的日期和时间不正确,因此无法与xxx.xxx.com建立私密连接