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

相关文章

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

使用Python实现网页表格转换为markdown

《使用Python实现网页表格转换为markdown》在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,本文将使用Python编写一个网页表格转Markdown工具,需... 在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,以便在文档、邮件或

Python实现pdf电子发票信息提取到excel表格

《Python实现pdf电子发票信息提取到excel表格》这篇文章主要为大家详细介绍了如何使用Python实现pdf电子发票信息提取并保存到excel表格,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录应用场景详细代码步骤总结优化应用场景电子发票信息提取系统主要应用于以下场景:企业财务部门:需

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件

Python实现获取带合并单元格的表格数据

《Python实现获取带合并单元格的表格数据》由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,所以本文我们就来聊聊如何使用Python实现获取带合并单元格的表格数据吧... 由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,现将将封装成类,并通过调用list_exc