public function weixin_orders_print() {
$id = I ( 'id' );
$this->assign ( 'id', $id );
$model = new WeixinApipayOrdersModel ();
$orderArray = $model->get_info_byid ( $id );
// dump($orderArray);
// 打印测试===========================================
// 设置报表标题
$orderArray ['reportTitle'] = '这是用户基本表';
// 报表中要得到的数据格式
$xmlReportData = get_reports_xml_byarray ( $orderArray );
$this->assign ( 'xmlReportData', $xmlReportData );
// 要打印的报表文件
$reportName = 'kdd_shentong.grf';
$this->assign ( 'reportName', $reportName );
// ===========================================
// put_log($xmlReportData);
// 显示模板
$this->display ( 'Weixin:weixin_orders_print' );
}HTML<include file="Public:header" />
<ul class="toolbar">
<li>
<button type="button" onclick="printView();" class="button button-danger" >
<i class="icon-print icon-white"></i> 打印报表
</button>
</li>
</ul>
<script type="text/javascript">
//打印报表函数 建立报表对象
CreateReport("Report");
function printView() {
//读取报表模版
Report.LoadFromURL("__ROOT__/Data/reports/_ReadReport.php?report={$reportName}&t={$thisTime}");
//加载报表数据
Report.LoadDataFromXML("{$xmlReportData}");
//打印预览
Report.PrintPreview(true);
};
</script>
<include file="Public:footer" />注意: header文件中需要引用GridReport的JS,如下<sc
如下效果图

打印

这里要注意的是
一.GridReport在打印预览的时候会出现"锐浪报表尚未注册"字样,但实际打印不会
二.所用的报表JS为了适应THINKPHP,需要稍做修改(主要是为了缓存刷新)
三.报表的数据源是xm
/**
* 将数组转化为可用的报表格式
*
* @param unknown $array
* @return string
*/
function get_reports_xml_byarray($array) {
$XMLText = "<report>";
// 得到报表明细字段
$XMLText .= "<rows>";
foreach ( $array ['rows'] as $key => $value ) {
$XMLText .= "<row>";
foreach ( $value as $keySub => $valueSub ) {
$XMLText .= "<" . $keySub . ">" . $valueSub . "</" . $keySub . ">";
}
$XMLText .= "</row>";
}
$XMLText .= "</rows>";
// 得到报表的其它参数
$XMLText .= "<_grparam>";
foreach ( $array as $key => $value ) {
if (! is_array ( $value )) {
$XMLText .= "<" . $key . ">" . $value . "</" . $key . ">";
}
}
$XMLText .= "</_grparam>";
$XMLText .= "</report>";
return $XMLText;
}可以在线设计的,在设计保存时,首次保存会出错,可以不管,会在相关目录下生成报表的GRF文件. 设计后即可调用打印.许多初学者会发现改过后的报表在打印时还是原来的格式,这是由于浏览器缓存造成, 请下载我改过的相关文件使用可以避免这一情况
我改过后的文件在这里无法上传,请移步到这里下载
http://www.abis.com.cn/thread-1226-1-1.html
最佳答案