JRT表格元素完全体

2024-01-06 14:12
文章标签 元素 表格 完全 jrt

本文主要是介绍JRT表格元素完全体,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前分享的表格绘制是一个表格是实现雏形,周边把表格完全体实现,后面很多打印和绘制逻辑将借助此表格实现,所以需要表格够稳定够强大。

表格定义,后面借助模板设计器定义,现在是写死的测试定义对象。
1.PageList定义每页的起点坐标和换页行数或者换页坐标,以及是否画标题。弄这么个数组就是考虑有业务换页后画表格位置要不同,并且换页行数有变化,正常的话一页给一个页信息,如果没给对应序号页面的页信息,将按最后的PageList元素控制。
2.HeadCol定义标题的列信息,可以给标题单独知道加粗等。
3.DataCol定义数据列的信息,设置打印哪些列,每列的宽度和字体等。
4.Cols定义列数量,用于多列打印。
5.Padding和Font定义间距和字体。
6.RowHeight定义行高。

{"PageList": [{"Left": 10,"Top": 40,"ChangePageRowNum": 14,"ChangePageY": 1000,"DrawHead": true}, {"Left": 30,"Top": 100,"ChangePageRowNum": 0,"ChangePageY": 600,"DrawHead": true}],"Cols": 1,"RowHeight": 20,"PaddingTop": 4,"PaddingLeft": 4,"PaddingRight": 4,"PaddingBottom": 4,"BoderWidth": 1,"PrintFont": "宋体","PrintFontSize": "12","PrintFontStyle": "","HeadCol": [{"DataField": "Col0","Text": "","Width": 150,"PrintAlignment": "","PrintFont": null,"PrintFontSize": null,"PrintFontStyle": "Bold","PrintColor": ""}, {"DataField": "Col1","Text": "","Width": 150,"PrintAlignment": "","PrintFont": null,"PrintFontSize": null,"PrintFontStyle": "Bold","PrintColor": ""}, {"DataField": "Col2","Text": "","Width": 150,"PrintAlignment": "","PrintFont": null,"PrintFontSize": null,"PrintFontStyle": "Bold","PrintColor": ""}, {"DataField": "Col3","Text": "","Width": 150,"PrintAlignment": "","PrintFont": null,"PrintFontSize": null,"PrintFontStyle": "Bold","PrintColor": ""}, {"DataField": "Col4","Text": "","Width": 150,"PrintAlignment": "","PrintFont": null,"PrintFontSize": null,"PrintFontStyle": "Bold","PrintColor": ""}],"DataCol": [{"DataField": "Col0","Text": "","Width": 150,"PrintAlignment": "","PrintFont": null,"PrintFontSize": null,"PrintFontStyle": null,"PrintColor": ""}, {"DataField": "Col1","Text": "","Width": 150,"PrintAlignment": "","PrintFont": null,"PrintFontSize": null,"PrintFontStyle": null,"PrintColor": ""}, {"DataField": "Col2","Text": "","Width": 150,"PrintAlignment": "","PrintFont": null,"PrintFontSize": null,"PrintFontStyle": null,"PrintColor": ""}, {"DataField": "Col3","Text": "","Width": 150,"PrintAlignment": "","PrintFont": null,"PrintFontSize": null,"PrintFontStyle": null,"PrintColor": ""}, {"DataField": "Col4","Text": "","Width": 150,"PrintAlignment": "","PrintFont": null,"PrintFontSize": null,"PrintFontStyle": null,"PrintColor": ""}]
}

表格绘制API定义,传入定义和标题级表格数据,这里加了表格换页回调接口和表格唯一键,换页前后会执行回调,如果不为null的话。
在这里插入图片描述

表格换页接口
在这里插入图片描述
画表格示例

import JRT.Core.DataGrid.*;
import JRT.Core.Dto.OutValue;
import JRT.Core.Dto.PrintElement;
import JRT.Core.Metrics.DrawMetricsHandler;
import JRT.Core.Util.PrintDrawProtocol;
import JRTBLLBase.BaseHttpHandlerNoSession;
import JRTBLLBase.Helper;import java.awt.*;
import java.util.*;
import java.util.List;/*** 画表格测试,将要实现一个自动切割和实现换页的表格个业务使用*/
public class DrawGrid extends BaseHttpHandlerNoSession implements IGridChangePage {/*** 打印元素*/private List<PrintElement> retList = new ArrayList<>();/*** 表格换页之前要执行的逻辑* @param gridKey* @param maxY*/public void PreChangePageDo(String gridKey,int maxY){retList.add(PrintDrawProtocol.DrawLabel(20, 10, "这是表格换页之前执行逻辑画的", "宋体", 12, "", null, "", "#fda632", "0"));}/*** 表格换页之后要执行的逻辑* @param gridKey* @param maxY*/public void AfterChangePageDo(String gridKey,int maxY){retList.add(PrintDrawProtocol.DrawLabel(400, 10, "这是表格换页之后执行逻辑画的", "宋体", 12, "", null, "", "#fda632", "0"));}/*** 按传入的RowID输出符合打印元素绘制协议的数据来实现打印控制** @param RowID   业务主键* @param P1* @param P2* @param P3* @param P4* @param P5* @param P6* @param P7* @param P8* @param P9* @param P10* @param P11* @param P12* @param P13* @param Session* @param Output* @return*/public String GetData(String RowID, String P1, String P2, String P3, String P4, String P5, String P6, String P7, String P8, String P9, String P10, String P11, String P12, String P13, OutValue Session, OutValue Output) throws Exception {//这部分由设计器维护的Json得到表格维护信息GridDto def = new GridDto();def.BoderWidth=1;GridPageDto page = new GridPageDto();page.ChangePageRowNum=14;page.Top=40;def.PageList.add(page);//第2和后面的页画到500后换页page = new GridPageDto();page.Top=100;page.Left=30;page.ChangePageY=600;def.PageList.add(page);GridColDto col = null;//表格列for (int i = 0; i < 5; i++) {col = new GridColDto();col.DataField = "Col" + i;col.Width = 150;def.DataCol.add(col);col = new GridColDto();col.DataField = "Col" + i;col.Width = 150;col.PrintFontStyle="Bold";def.HeadCol.add(col);}GridDataDto headData = new GridDataDto();headData.Col0="第一列";headData.Col1="第二列";headData.Col2="第三列";headData.Col3="第四列";headData.Col4="第五列";//这部分由业务打印组装数据List<Object> dataList = new ArrayList<>();for (int i = 0; i < 41; i++) {GridDataDto one = new GridDataDto();one.Col0 = "第" + i + "行0列,这是比较长的内容额,会自动换行";//合并单元格if(i%4==0){one.Col0=PrintDrawProtocol.GetMergeGridStr(one.Col0,2,2);}one.Col1 = "第" + i + "行1列,这是稍微长的内容";one.Col2 = "第" + i + "行2列,this is jrtbase draw grid test for printtemplate";one.Col3 = "第" + i + "行3列";one.Col4 = "1.这是第一行$r$n2.这是第二行$r$n3.这是第三行";dataList.add(one);}//控制纸张方向retList.add(PrintDrawProtocol.ControlPrinter("A4", PrintDrawProtocol.PrintLayout.Portrait,"pdf","",0,0));//绘制表格int lastY = DrawGrid(retList,def, headData, dataList,"G1",this);return Helper.Object2Json(retList);}/*** 数据实体*/public static class GridDataDto {public String Col0;public String Col1;public String Col2;public String Col3;public String Col4;}
}

效果
第一页,控制14行换页
在这里插入图片描述

后面几页页,控制从30,100开始画,最大画到600换页
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

适合哪些业务场景自己构思吧,哈哈

这篇关于JRT表格元素完全体的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/576599

相关文章

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

Java利用poi实现word表格转excel

《Java利用poi实现word表格转excel》这篇文章主要为大家详细介绍了Java如何利用poi实现word表格转excel,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、每行对象类需要针对不同的表格进行对应的创建。package org.example.wordToEx

Linux find 命令完全指南及核心用法

《Linuxfind命令完全指南及核心用法》find是Linux系统最强大的文件搜索工具,支持嵌套遍历、条件筛选、执行动作,下面给大家介绍Linuxfind命令完全指南,感兴趣的朋友一起看看吧... 目录一、基础搜索模式1. 按文件名搜索(精确/模糊匹配)2. 排除指定目录/文件二、根据文件类型筛选三、时间

使用EasyExcel实现简单的Excel表格解析操作

《使用EasyExcel实现简单的Excel表格解析操作》:本文主要介绍如何使用EasyExcel完成简单的表格解析操作,同时实现了大量数据情况下数据的分次批量入库,并记录每条数据入库的状态,感兴... 目录前言固定模板及表数据格式的解析实现Excel模板内容对应的实体类实现AnalysisEventLis

JavaScript中的Map用法完全指南

《JavaScript中的Map用法完全指南》:本文主要介绍JavaScript中Map用法的相关资料,通过实例讲解了Map的创建、常用方法和迭代方式,还探讨了Map与对象的区别,并通过一个例子展... 目录引言1. 创建 Map2. Map 和对象的对比3. Map 的常用方法3.1 set(key, v

使用Python实现表格字段智能去重

《使用Python实现表格字段智能去重》在数据分析和处理过程中,数据清洗是一个至关重要的步骤,其中字段去重是一个常见且关键的任务,下面我们看看如何使用Python进行表格字段智能去重吧... 目录一、引言二、数据重复问题的常见场景与影响三、python在数据清洗中的优势四、基于Python的表格字段智能去重

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加