在PHP开发中使用ReportAll报表控件

2 篇文章 0 订阅
1 篇文章 0 订阅

    前段时间做一个web项目,需要打印证照功能,一开始是采用生成pdf文件再发到本地打印的方法,在客户实际使用中发现不太灵活,主要是在不同打印机环境下,偏移量不太好设定,另外客户想自行调整打印内容,比如字体大小,这个用pdf就比较麻烦了,于是在网上找了一下,看有没有好的web打印方案,发现了reportall这个软件,试用了一下,感觉还不错,而且普通版是免费使用的.现在就和大家分享一下使用心得

.reportall简介

详细介绍请到其官网查看(网址:http://www.reportall.com.cn),这里只简单说一下.

ra采用的是activeX技术,可以兼容大多数浏览器,在第一次使用的时候,浏览器会把reportall.ocx这个activeX控件下载到本地,这个控件负责解析报表的模板格式(报表文档)以及要打印的动态数据(报表数据),所以服务器端的任务就是负责提供这两类数据.

报表文档:记录报表页面的样式及格式信息.reportall提供了专门的报表设计器来编辑报表文档

动态数据:xml格式定义的要填写到报表中的内容


.使用步骤

<1>reportall报表设计器设计好报表文档,如果你接触过fastreport之类的报表软件,对这种设计方式应该不陌生.具体方法请查看ra的说明文件.最终得到一个后缀名为rad的报表文档.

<2>把报表文档发到服务器的适当地方,比如/public/rad路径下

<3>把下面代码嵌入到需要输出报表的页面里,这段代码定义了报表文档的地址和提供动态数据的服务器地址

<Object clsid="{568DC60B-F884-4147-8610-8C348AAFA2F8}"id="ReportAll" TYPE="application/x-itst-activex"width="100%" height="100%"   <!--RA控件 -->
      param_docsrc ="http://localhost/Public/rad/sample01.rad"  <!--报表文档url-->
      param_datasrc="http://localhost/test/index.php/raserver" >  <!--报表数据(web服务器)url-->
</Object>
<4>编写提供动态数据的服务器程序

.PHP服务器程序的编写

下面重点介绍如何用php编写一个向ra控件提供报表数据的服务器程序

<1>数据格式

动态数据是以xml文件方式提供的,

假设我们要输出一个单位的部门清单,这个清单里有两列,第一列是部门编号ID,第二列是部门名称Name

报表数据实例:

<?xmlversion="1.0" encoding="UTF-8" ?>
<DocumentData>
  <Detail>
    <Row ID="1" Name="办公室" />
    <Row ID="2" Name="财务科" />
    <Row ID="3" Name="物资科" />
    <Row ID="4" Name="综合科" />
  </Detail>
</DocumentData>

要点是<Row/>,动态数据就藏身其中.

IDName都是fieldname即报表文档中引用动态数据的字段名称,等号后面是数据值

所以一行数据的格式就是

   <Row    数据1的字段名称="数据1的取值数据2的字段名称="数据2的取值......    />

<2>服务器程序的任务

服务器的任务就是根据请求的参数,从数据库中查询出数据,然后拼装成一个xml格式的字符串,并传递给请求者.

考虑到效率,对这种格式很清楚的xml数据的生成,没必要使用php中的SimpleXMLDomDocument工具,最好采用直接写的方式(这几种方式的效率比较见我的博文 PHP中3种生成XML文件方法的速度比较 )

privatefunction directWriteXml($d){
    $xmltext='<?xml version="1.0"encoding="UTF-8" ?>';
    $xmltext.='<DocumentData>';
    $xmltext .='<Detail>';
    foreach($d as $key=$value){

         $xmltext.=" <Row ID=\" {$key} \" Name=\"{$value]}\" />" ;

    }
   $xmltext.='</Detail>';
   $xmltext .='</DocumentData>';
   return$xmltext;
}

reportall工作方式图示






  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一款功能超强而且全免费的国产报表工具,拖动 -- 绑定 -- 搞掂 ReportAll是面向软件开发人员的报表开发工具,具有全新的设计思想,将“对象摆放”类和“电子表格”类报表开发工具完美融合,使用种类丰富且功能强大的报表对象组合生成任意复杂的报表样式。在ReportAll,无论是“带区(Band)”、“表格(Grid)”、“图表(Chart)”、“文字”及“线条”等元素都作为报表对象嵌入在报表页面之。这些报表对象独立占据一定的区域,独立地进行分页控制。事实上,使用ReportAll为报表布局不受任何限制,开发人员可以随意灵活地利用每一块页面空间。另外,ReportAll提供的报表对象都是“数据感知”的,当他们和虚拟数据集的数据建立“绑定”关系后,可以实时显示数据和感知数据的变化。 ReportAll是面向软件开发人员的报表开发工具,具有全新的设计思想,将“对象摆放”类和“电子表格”类报表开发工具完美融合,使用种类丰富且功能强大的报表对象组合生成任意复杂的报表样式。在ReportAll,无论是“带区(Band)”、“表格(Grid)”、“图表(Chart)”、“文字”及“线条”等元素都作为报表对象嵌入在报表页面之。这些报表对象独立占据一定的区域,独立地进行分页控制。事实上,使用ReportAll为报表布局不受任何限制,开发人员可以随意灵活地利用每一块页面空间。另外,ReportAll提供的报表对象都是“数据感知”的,当他们和虚拟数据集的数据建立“绑定”关系后,可以实时显示数据和感知数据的变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值