PHP:将数据传递给Grid++Report模板进行打印

news2025/2/23 22:10:38

模板参考

这里使用的模板test111.grt参照进行生成 ,需要确保字段对应才能将数据进行传递

Grid++Report:自定义模板设计(自由表格使用),详细教程-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/weixin_46001736/article/details/144315191?spm=1001.2014.3001.5502

PHP引入Grid++Report参考 

php:完整部署Grid++Report到php项目,并实现模板打印-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/weixin_46001736/article/details/144309295?spm=1001.2014.3001.5502

一、官方提供模板

可参考plugins中的案例

1、将模板写入index.php

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <title>Web报表(B/S报表)演示 - 查询显示控件展现报表</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="php/plugins/CreateControl.js" type="text/javascript"></script>
    <style type="text/css">
        html,
        body {
            margin: 0;
            height: 100%;
        }
    </style>
</head>

<body style="margin:0">
    <script type="text/javascript">
        //用查询显示控件展现报表,从URL“../grf/1a.grf”获取报表膜板定义,从URL“../data/DataCenter.php?data=Customer”获取XML形式的报表数据,
        //CreateDisplayViewerEx("100%", "100%", urlAddRandomNo("../../grf/1a.grf"), "../../data/DataCenter.php?data=Customer", true, "");
        InsertDisplayViewer({
            report: urlAddRandomNo("php/grf/test111.grf"),
            data: "php/data/DataCenter.php?data=Customer"
        });
    </script>
</body>

</html>

2、数据库查询、数据传递

代码路径:php/data/DataCenter.php

文件DataCenter.php:使用Switch case进行判断,并查询数据传递给模板

数据查询,这里传递的参数是data = Customer,也就是case=Customer的时候执行查询语句

这是在DataCenter.php进行数据查询这里查询的数据都是xml类型,在sql中进行了转换

mysql_GenXmlData.php代码

<?php
include 'BaseReportData.php';


// 产生报表的多个记录集的 XML 数据
function XML_GenMultiRecordset($QueryList, $DataType = const_DefaultDataType)
{
	// 连接到 MySQL 服务器
	$conn = new mysqli("localhost", "root", "", "gridreport");
	if ($conn->connect_error) {
		die("连接失败: " . $conn->connect_error);
	}
	$conn->set_charset("utf8");

	$XMLText = "<xml>\n";
	foreach ($QueryList as $RecordsetName => $QuerySQL) {
		$result = $conn->query($QuerySQL);

		$fldTypes = array();
		$numfields = $result->field_count;
		for ($i = 0; $i < $numfields; $i++) {
			$fldType = $result->fetch_field_direct($i)->type;
			if (stripos($fldType, "date") !== false)
				$fldTypes[$i] = 1;
			else if ($fldType == "blob" || $fldType == "image")
				$fldTypes[$i] = 2;
			else
				$fldTypes[$i] = 0;
		}

		while ($row = $result->fetch_assoc()) {
			$XMLText .= "<" . $RecordsetName . ">";
			for ($i = 0; $i < $numfields; $i++) {
				if ($fldTypes[$i] == 2)
					$XMLText .= ("<" . $result->fetch_field_direct($i)->name . ">" . base64_encode($row[$result->fetch_field_direct($i)->name]) . "</" . $result->fetch_field_direct($i)->name . ">");
				else
					$XMLText .= ("<" . $result->fetch_field_direct($i)->name . ">" . htmlspecialchars($row[$result->fetch_field_direct($i)->name], ENT_QUOTES) . "</" . $result->fetch_field_direct($i)->name . ">");
			}
			$XMLText .= "</" . $RecordsetName . ">\n";
		}

		$result->free();
	}
	$XMLText .= "</xml>\n";

	ResponseReportData($XMLText, $DataType);

	$conn->close();
}

// 产生报表的一个记录集的 XML 数据
function XML_GenOneRecordset($QuerySQL, $DataType = const_DefaultDataType)
{
	$QueryList = array("row" => $QuerySQL);
	XML_GenMultiRecordset($QueryList, $DataType);
}

function BatchGetDataCount($QuerySQL)
{
	// 连接到 MySQL 服务器
	$conn = new mysqli("localhost", "root", "", "gridreport");
	if ($conn->connect_error) {
		die("连接失败: " . $conn->connect_error);
	}
	$conn->set_charset("utf8");

	$result = $conn->query($QuerySQL);

	$Total = 0;
	if ($row = $result->fetch_assoc()) {
		$Total = $row[0];
	}

	$result->free();

	$conn->close();

	return $Total;
}

// 产生字段类型,用于调试中分析子段的类型名称
function ListFieldType($QuerySQL)
{
	header("Content-Type: text/plain");

	// 连接到 MySQL 服务器
	$conn = new mysqli("localhost", "root", "", "gridreport");
	if ($conn->connect_error) {
		die("连接失败: " . $conn->connect_error);
	}
	$conn->set_charset("utf8");

	$result = $conn->query($QuerySQL);

	$XMLText = "<xml>\n";

	$numfields = $result->field_count;
	for ($i = 0; $i < $numfields; $i++) {
		$field = $result->fetch_field_direct($i);
		$XMLText .= ($field->name . "=" . $field->type . "\n");
	}

	$result->free();

	$conn->close();

	$XMLText .= "</xml>\n";
	echo $XMLText;
}

二、自定义数据传递

这里采用json格式进行传递

1、index.php

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <title>Web报表(B/S报表)演示 - 查询显示控件展现报表</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="php/plugins/CreateControl.js" type="text/javascript"></script>
    <style type="text/css">
        html,
        body {
            margin: 0;
            height: 100%;
        }
    </style>
</head>

<body style="margin:0">
    <script type="text/javascript">
        //用查询显示控件展现报表,从URL“../grf/1a.grf”获取报表膜板定义,从URL“../data/DataCenter.php?data=Customer”获取XML形式的报表数据,
        //CreateDisplayViewerEx("100%", "100%", urlAddRandomNo("../../grf/1a.grf"), "../../data/DataCenter.php?data=Customer", true, "");
        var data = {
            "Master": [{
                "Barcode1": '1234567890', //条形码名称
                "header1": '123456',
                "header2": "客户",
                "header3": "零件料号",
                "header4": "2024-07-01",
                "header5": "零件名称",
                "header6": "班别",
            }],
            "Detail": [{
                    "line1": "HUNGC",
                    "line2": "五金机械",
                    "line3": "苏先生",
                    "line4": "销售代表",
                    "line5": "德昌路甲"
                },
                {
                    "line1": "CENTC",
                    "line2": "三捷实业",
                    "line3": "王先生",
                    "line4": "市场经理",
                    "line5": "英雄山路"
                },
                {
                    "line1": "CACTU",
                    "line2": "威航货运",
                    "line3": "刘先生",
                    "line4": "销售代理",
                    "line5": "经七纬"
                },
                {
                    "line1": "BLONP",
                    "line2": "国皓",
                    "line3": "黄雅玲",
                    "line4": "市场经理",
                    "line5": "广发北路"
                },
            ],

        }
        //  将数据转换为 JSON 格式
        var jsonData = JSON.stringify(data);
        InsertDisplayViewer({
            report: urlAddRandomNo("php/grf/test111.grf"),
            data: jsonData,
            //  data: "php/data/DataCenter.php?data=Customer"
        });
    </script>
</body>

</html>

确认数据对应

 

2、效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2256645.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C#】新建窗体文件,Form、UserControl

从用途、功能性和架构方面进行描述。 1. 继承自 Form 的窗体&#xff08;通常是窗口&#xff09;&#xff1a; 在 C# 中&#xff0c;Form 是用于创建应用程序的主窗口或对话框窗口的类。当您继承自 Form 时&#xff0c;您创建的是一个完整的窗口&#xff0c;可以显示内容、与…

Ubuntu22.04搭建LAMP环境(linux服务器学习笔记)

目录 引言&#xff1a; 一、系统更新 二、安装搭建Apache2 1.你可以通过以下命令安装它&#xff1a; 2.查看Apache2版本 3.查看Apache2运行状态 4.浏览器访问 三、安装搭建MySQL 1.安装MySQL 2.查看MySQL 版本 3.安全配置MySQL 3.1是否设置密码&#xff1f;(按y|Y表…

小尺寸低功耗蓝牙模块在光伏清扫机器人上的应用

一、引言 随着可再生能源的迅速发展&#xff0c;光伏发电系统的清洁与维护变得越来越重要。光伏清扫机器人通过自动化技术提高了清洁效率&#xff0c;而蓝牙模组的集成为这些设备提供了更为智能的管理和控制方案。 二、蓝牙模组的功能与实现&#xff1a; 蓝牙模组ANS-BT103M…

通过linux命令获取自选股票价格及大盘涨跌幅

技术发展与数据获取需求 互联网与金融数据融合:随着互联网的普及和金融市场的数字化发展,金融数据的获取和分析变得更加便捷和重要。投资者希望能够及时、准确地获取股票价格和市场指数等信息,以便做出合理的投资决策。Linux 作为一种强大的操作系统,为数据获取和处理提供…

Linux 远程连接服务

远程连接服务器简介 什么是远程连接服务器 远程连接服务器通过文字或图形接口方式来远程登录系统&#xff0c;让你在远程终端前登录linux主机以取得可操 作主机接口&#xff08;shell&#xff09;&#xff0c;而登录后的操作感觉就像是坐在系统前面一样。 远程连接服务器的功…

Spring Boot中实现JPA多数据源配置指南

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;本文详细介绍了在Spring Boot项目中配置和使用JPA进行多数据源管理的步骤。从引入依赖开始&#xff0c;到配置数据源、创建DataSource bean、定义实体和Repository&#xff0c;最后到配置事务管理器和使用多数据…

Ubuntu22.04深度学习环境安装【显卡驱动安装】

前言 使用Windows配置环境失败&#xff0c;其中有一个包只有Linux版本&#xff0c;Windows版本的只有python3.10的&#xff0c;所以直接选用Linux来配置环境&#xff0c;显卡安装比较麻烦&#xff0c;单独出一期。 显卡驱动安装 方法一&#xff1a;在线安装&#xff08;操作…

数智运营一体化平台项目经营分享

分离前后台&#xff0c;增强产品管理灵活性 前端成熟的流程平台&#xff0c;支持低代码快速灵活配置流程表单&#xff0c;完美解决流程频繁变化与快速上线、费用控制的矛盾。使产品管理体系&#xff0c;摆脱了流程可移植性差和投入大量人力物力无止境修改流程的困境。同时&…

UE5 猎户座漂浮小岛 09 移动能力 角色属性

UE5 猎户座漂浮小岛 09 移动能力 角色属性&#xff08;1&#xff09; 1.移动能力 1.1 加速跑 BlendSpace&#xff1a;混合空间 2.角色属性 2.1 行动点数 AP&#xff1a;Action Point Max AP&#xff1a;Max Action Point AP CPS&#xff1a;Action Point Consume Per Sec…

LeetCode---426周赛

题目列表 3370. 仅含置位位的最小整数 3371. 识别数组中的最大异常值 3372. 连接两棵树后最大目标节点数目 I 3373. 连接两棵树后最大目标节点数目 II 一、仅含置位位的最小整数 题目要求我们返回二进制数位全为1&#xff0c;且大于 n 的最小的整数&#xff0c;我们可以直…

HTML笔记()蜘蛛纸牌之卡牌拖拽

效果 代码 <!DOCTYPE html> <html><head><style>body{display: flex;justify-content: center;align-items: center;height: 100vh;background-color: #2b2b2b;position: relative;}.card{/*设置卡牌的外观*/width: 150px;height: 200px;background-…

基于springboot校园生活服务平台源码和论文

可做计算机毕业设计JAVA、PHP、爬虫、APP、小程序、C#、C、python、数据可视化、大数据、文案 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一…

C++ 数组与字符串全解析:从基础到应用

目录 数组和字符串 &#xff08;一&#xff09;数组&#xff08;在 C 中&#xff09; 1.一维数组 2.二维数组 &#xff08;二&#xff09;C - style 字符串 &#xff08;三&#xff09;C string 类 数组和字符串 &#xff08;一&#xff09;数组&#xff08;在 C 中&…

Git常用的命令【提交与回退】

git分布式版本控制系统 &#xff08;SVN集中式版本控制系统&#xff09;之间的对比 git有本地仓库和远程仓库&#xff0c;不同的开发人员可以分别提交自己的本地仓库并维护代码的版本控制。 然后多个人员在本地仓库协作的代码&#xff0c;可以提交到远程仓库中做整合。 git本…

JAVA秋招面试题精选-第一天总结

目录 分栏简介&#xff1a; 问题一&#xff1a;订单表每天新增500W条数据&#xff0c;分库分表应该怎么设计&#xff1f; 问题难度以及频率&#xff1a; 问题导向&#xff1a; 满分答案&#xff1a; 举一反三&#xff1a; 问题总结&#xff1a; 问题二&#xff1a;解释…

C—初阶结构体

若是阁下满意的话&#xff0c;能否一键三连呢&#xff01;&#xff01;&#xff01;&#xff01; 结构体基础知识&#xff1a; 概念&#xff1a;结构体是一些值的集合&#xff0c;这些值称为变量&#xff0c;变量可以是不同类型 这里我们再想一下之前的数组&#xff0c;数组是一…

物品识别 树莓派 5 YOLO v5 v8 v10 11 计算机视觉

0. 要实现的效果 让树莓派可以识别身边的一些物品&#xff0c;比如电脑&#xff0c;鼠标&#xff0c;键盘&#xff0c;杯子&#xff0c;行李箱&#xff0c;双肩包&#xff0c;床&#xff0c;椅子等 1. 硬件设备 树莓派 5 raspberrypi.com/products/raspberry-pi-5/树莓派官方摄…

JS学习(1)(基本概念与作用、与HTML、CSS区别)

目录 一、JavaScript是什么&#xff1f; &#xff08;1&#xff09;基本介绍 &#xff08;2&#xff09;简称&#xff1a;JS&#xff1f; 二、JavaScript的作用。 三、HTML、CSS、JS之间的关系。 &#xff08;1&#xff09;html、css。 &#xff08;2&#xff09;JavaScript。 …

matlab读取NetCDF文件

matlab对NetCDF文件进行信息获取和读取数据 文章目录 前言一、什么是NetCDF文件二、读取NetCDF文件数据 1.引入库 2.读入数据总结 前言 在气象学中&#xff0c;许多气象数据存储在NetCDF文件中&#xff0c;后缀为.nc&#xff0c;通常可以用NCL、python和MATLAB等对该…

shell自动显示当前git的branch

效果简介&#xff1a; 1. 如果没在git仓库&#xff0c;显示无变化 2. 如果在git仓库&#xff0c;显示当前分支 实现方法&#xff1a; 在~/.bashrc 里添加&#xff1a; function git_branch { test -d .git && branch"git branch | grep "^\*" | sed…