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

模板参考

这里使用的模板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、效果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Camp4-L2:LMDeploy 量化部署进阶实践

书生浦语大模型实战营第四期&#xff1a;LMDeploy 量化部署进阶实践 教程链接&#xff1a;https://github.com/InternLM/Tutorial/tree/camp4/docs/L2/LMDeploy视频链接&#xff1a;https://www.bilibili.com/video/BV18aUHY3EEG/?vd_sourceb96c7e6e6d1a48e73edafa36a36f1697…

spark-operaotr

1、系统架构 括如下几个组件: SparkApplication控制器, 该控制器用于创建、更新、删除SparkApplication对象,同时控制器还会监控相应的事件,执行相应的动作;Submission Runner, 负责调用spark-submit提交Spark作业, 作业提交的流程完全复用Spark on K8s的模式;Spark Pod Monit…

记录:ubuntu24.04源码安装nginx

一. 下载Nginx源码 两个地址二选一即可 Nginx官网Nginx官网 Github eg&#xff1a;nginx-1.27.3.tar.gz 下载到 ubuntu24.04 的 Downloads &#xff0c;解压 cd Downloads tar -zxvf nginx-1.27.3.tar.gz二. 编译安装 Note: 编译最好用 root 权限&#xff0c; 使用下面命令…

国产GPU中,VLLM0.5.0发布Qwen2.5-14B-Instruct-GPTQ-Int8模型,请求返回结果乱码

概述 国产GPU: DCU Z100 推理框架&#xff1a; vllm0.5.0 docker容器化部署 运行如下代码&#xff1a; python -m vllm.entrypoints.openai.api_server --model /app/models/Qwen2.5-14B-Instruct-GPTQ-Int8 --served-model-name qwen-gptq --trust-remote-code --enforce…

R155 VTA 认证对汽车入侵检测系统(IDS)合规要求

续接上集“浅谈汽车网络安全车辆型式认证&#xff08;VTA&#xff09;的现状和未来发展”&#xff0c;有许多读者小伙伴有联系笔者来确认相关的R155 VTA网络安全审核要求&#xff0c;基于此&#xff0c;笔者将针对 R155 VTA 每一条网络安全审核细则来具体展开。 今天就先从汽车…

Pac4j 学习笔记

随着互联网技术的飞速发展&#xff0c;网络安全问题日益凸显&#xff0c;企业信息安全与身份认证系统变得越来越重要&#xff0c;而且安全认证集成方案作为保障网络安全的重要一环&#xff0c;其研究与应用也至关重要。在这种背景下&#xff0c;Pac4j 作为一种流行的身份验证库…

5G CPE组成及功能介绍(二)

5G CPE 组成及功能介绍 5G CPE 将5G信号转换为Wi-Fi或有线信号, 其由5G基带芯片、主控处理器、WIFI、电源、天线、结构等多个部件组成。5G基带: 这是5G CPE中最核心的组件,负责接收和解码来自5G基站的信号,然后将这些数据转换成用户设备可以使用的格式。采用了先进的5G芯片…

微服务-seata分布式事务

1.简述 1.1.什么是分布式事务 事务&#xff1a;是应用程序中一系列严密的操作&#xff0c;所有操作必须成功完成&#xff0c;要么全部失败&#xff0c;ACID 特性。本地事务&#xff1a;关系型数据库中,由一组SQL组成的一个执行单元,该单元要么整体成功,要么整体失败&#xff…

flyway执行sql遇到变量执行报错解决

前两天在公司使用flyway工具执行sql时&#xff0c;开发写的sql里面有变量&#xff0c;于是这个flyway工具不识别这个变量直接报错&#xff0c;不接着往下执行了。报错信息如下&#xff1a; flyway工具执行sql报错 information: No value provided for placeholder: ${ep1} 于是…

k8s 为什么需要Pod?

Pod&#xff0c;是 Kubernetes 项目中最小的 API 对象&#xff0c;更加专业的说&#xff0c;Pod&#xff0c;是 Kubernetes 项目的原子调度单位。 Pod 是 Kubernetes 里的原子调度单位。这就意味着&#xff0c;Kubernetes 项目的调度器&#xff0c;是统一按照 Pod 而非容器的资…

IDEA 鼠标悬浮显示方法注释 javaDoc 及配置遇到的问题

方法详情&#xff1a; 鼠标悬浮时的效果&#xff1a; 设置方法&#xff1a; File -> Settings -> Editor -> Code Editing -> Quick Documentation,勾选红框中的选项 可能会遇到的问题&#xff1a; 如果不能选中&#xff0c;如下图 把下图的位置的选中项取消掉 选…

vscode CMakeLists中对opencv eigen的引用方法

CMakeLists.txt 项目模式&#xff08;只有一个main函数入口&#xff09; cmake_minimum_required(VERSION 3.5)project(vsin01 VERSION 0.1 LANGUAGES CXX)set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON)set(OpenCV_DIR G:/MinGW_Opencv/opencv4.10/opencv…

cocos creator接入字节跳动抖音小游戏JSAPI敏感词检测(进行文字输入,但输入敏感词后没有替换为*号)

今天更新了某个抖音小游戏的版本&#xff0c;增加了部分剧情&#xff0c;半天过后一条短信审核未通过&#xff0c;emmm…抖音总是能给开发者惊喜…打开电脑看看这次又整什么幺蛾子… 首先是一脸懵逼&#xff0c;后端早已接入了官方的内容安全检测能力了&#xff08;https://de…

基于单片机的中小水电站闸门控制系统(论文+源码)

1 系统总体设计 本次基于单片机的中小水电站闸门控制系统的设计&#xff0c;整体结构如图2.1所示。整个系统包括stm32单片机最小系统&#xff0c;电源&#xff0c;液晶&#xff0c;电机&#xff0c;闸门开度检测模块&#xff0c;水位检测模块&#xff0c;温度传感器&#xff0…

证明网络中的流形成一个凸集

证明网络中的流形成一个凸集 步骤1&#xff1a;定义和符号步骤2&#xff1a;线性组合步骤3&#xff1a;验证容量限制步骤4&#xff1a;验证流量守恒结论示例代码&#xff08;C语言&#xff09; 在网络流理论中&#xff0c;一个流 f f f 是定义在网络图的边集上的一种函数&…

【贪心算法】贪心算法五

贪心算法五 1.跳跃游戏 II2.跳跃游戏3.加油站3.单调递增的数字 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.跳跃游戏 II 题目链接&…

计算机毕业设计Python医疗问答系统 医疗可视化 BERT+LSTM+CRF深度学习识别模型 机器学习 深度学习 爬虫 知识图谱 人工智能 大数据毕业设计

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

QT 中 sqlite 数据库使用

一、前提 --pro文件添加sql模块QT core gui sql二、使用 说明 --用于与数据库建立连接QSqlDatabase--执行各种sql语句QSqlQuery--提供数据库特定的错误信息QSqlError查看qt支持的驱动 QStringList list QSqlDatabase::drivers();qDebug()<<list;连接 sqlite3 数据库 …

总结的一些MySql面试题

目录 一&#xff1a;基础篇 二&#xff1a;索引原理和SQL优化 三&#xff1a;事务原理 四&#xff1a;缓存策略 一&#xff1a;基础篇 1&#xff1a;定义&#xff1a;按照数据结构来组织、存储和管理数据的仓库&#xff1b;是一个长期存储在计算机内的、有组织的、可共享 的…

Mac 录制电脑系统内的声音的具体方法?

1.第一步&#xff1a;下载BlackHole 软件 方式1&#xff1a;BlackHole官方下载地址 方式2&#xff1a; 百度云下载 提取码: n5dp 2.第二步&#xff1a;安装BlackHole 双击下载好的BlackHole安装包&#xff0c;安装默认提示安装。 3.第三步&#xff1a;在应用程序中找到音频…