CN115438638A - 一种树形数据分页输出表格文档的方法与系统 - Google Patents

一种树形数据分页输出表格文档的方法与系统 Download PDF

Info

Publication number
CN115438638A
CN115438638A CN202211032499.5A CN202211032499A CN115438638A CN 115438638 A CN115438638 A CN 115438638A CN 202211032499 A CN202211032499 A CN 202211032499A CN 115438638 A CN115438638 A CN 115438638A
Authority
CN
China
Prior art keywords
data
height
node
paging
tree structure
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211032499.5A
Other languages
English (en)
Inventor
吴炳萱
门合建
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Langchao Intelligent Medical Technology Co ltd
Original Assignee
Shandong Langchao Intelligent Medical Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong Langchao Intelligent Medical Technology Co ltd filed Critical Shandong Langchao Intelligent Medical Technology Co ltd
Priority to CN202211032499.5A priority Critical patent/CN115438638A/zh
Publication of CN115438638A publication Critical patent/CN115438638A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/177Editing, e.g. inserting or deleting of tables; using ruled lines
    • G06F40/18Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/109Font handling; Temporal or kinetic typography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/114Pagination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/117Tagging; Marking up; Designating a block; Setting of attributes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • G06F40/154Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/174Form filling; Merging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/183Tabulation, i.e. one-dimensional positioning
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16HHEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
    • G16H40/00ICT specially adapted for the management or administration of healthcare resources or facilities; ICT specially adapted for the management or operation of medical equipment or devices
    • G16H40/20ICT specially adapted for the management or administration of healthcare resources or facilities; ICT specially adapted for the management or operation of medical equipment or devices for the management or administration of healthcare resources or facilities, e.g. managing hospital staff or surgery rooms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • General Business, Economics & Management (AREA)
  • Business, Economics & Management (AREA)
  • Biomedical Technology (AREA)
  • Epidemiology (AREA)
  • Medical Informatics (AREA)
  • Primary Health Care (AREA)
  • Public Health (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明特别涉及一种树形数据分页输出表格文档的方法与系统。该树形数据分页输出表格文档的方法与系统,在Java语言环境下使用itext插件,为医院考核分析报告中的医院属性数据设计树结构,实现树结构转表格的自动合并;对数据进行手动分页,使分页后以及竖向合并单元格被拆分后的内容能够在相连页面中连续显示;生成PDF格式的报告,将医院属性数据以树结构表格的形式进行显示,并将显示内容与水印、页眉页脚及目录进行联动设置与显示。该树形数据分页输出表格文档的方法与系统,实现了对树结构数据的转表、分页及整理必要信息计算操作的封装,补全了当前itext/poi插件生成表格形式的Word或PDF文件时在分页上的短板,使开发人员可以将更多精力投入到业务实现上。

Description

一种树形数据分页输出表格文档的方法与系统
技术领域
本发明涉及计算机应用技术领域,特别涉及一种树形数据分页输出表格文档的方法与系统。
背景技术
在计算机应用的各个领域中,树结构作为数据结构中一个相当重要的非线性结构,广泛应用于计算机领域中。在某些应用场景中,需要将树结构以表格的形式做可视化输出。
比如,在医院管理软件中,用于三级二级医院等级评审的指标有数千项,根据医院属性不同,在考核时这些项目又被以不同的规则摘取,以不同维度进行统计分析,不仅生成的报告会出现各种复杂合并的场景,同时数量上,以A4横排每页20行计算,通常可以达到近千页、几万行、数十万单元格。评审文件中通常都是表格中夹杂各类图标及图表。想要将这些数据以报告的形式展示出来,需要借助现有如word或pdf之类的文档的生成工具。截至目前,itext、poi等文档生成插件或前端可视化插件基本都可以实现表格的横向、竖向、横竖向合并等基础操作。但是表头设置、跨页合并需求的支持并不完善,尤其在包含图片等特殊内容时问题更加突出。
基于上述问题,本发明提出了一种树形数据分页输出表格文档的方法与系统。
发明内容
本发明为了弥补现有技术的缺陷,提供了一种简单高效的树形数据分页输出表格文档的方法与系统。
本发明是通过如下技术方案实现的:
一种树形数据分页输出表格文档的方法,其特征在于:在Java语言环境下使用itext插件,将医院考核分析报告生成表结构的PDF文档,包括以下步骤:
步骤S1、为医院考核分析报告中的医院属性数据设计树结构,计算表格层级部分合并需要的属性,包括但不限于数据标识、节点标识、父节点标识、节点名称、是否是叶子节点,是否是横向合并节点、子节点数据、横/竖向合并数量、占用高度和原数据对象,实现树结构转表格的自动合并功能;
步骤S2、对数据进行手动分页,主动设置分页后单元格内容;确定了对象嵌套的树结构的输出内容、横竖合并数量、每列的最大长度和平均长度后,以开放的形式提供接口,便于根据上述长度比例及表格总宽度确定每列的宽度返回;输出表格之前获取当前页面剩余可用高度,用于计算分页时拆分表格的位置;
再次遍历整个树结构,结合首行缩进宽度和逐字符占用的宽度,判断实际换行的情况,得到最终占用的行数;
对表格中的字体、字号、样式设置以及页面可用高度/宽度进行设置,动态分配列宽,并实现树结构数据分页功能,使分页后以及竖向合并单元格被拆分后的内容能够在相连页面中连续显示;
步骤S3、生成PDF格式的报告,将医院属性数据以树结构表格的形式进行显示,并将显示内容与水印、页眉页脚及目录进行联动设置与显示。
所述步骤S1中,首次递归对树结构各个节点的高度和宽度进行计算,结合叶子节点附带的其他业务属性,得到转表格后横向竖向单元格的合并规则;
所述步骤S2中,二次递归时通过对字号或内容宽高、行高、边距与边框因素进行计算,综合两个方向合并或综合合并的情况,判断实际生成中占用的高度和宽度,结合输出载体的可用高度对树结构进行按页拆分;
所述步骤S3中,添加固定的表头,综合分配各列宽度,同时处理目录与水印信息的计算处理过程,使其适用于树结构转表结构的场景。
所述步骤S1中,按照父节点标识排序,先将医院考核分析报告中的医院属性数据转换为树结构,递归时标识每个节点自根节点起算起的层级;
在递归回溯时,统计每个节点下的叶子总数与分支高度,并标记是否为叶子节点;若处理节点是叶子节点,将ROOT的最大层级数减去当前分支高度,即为该项内容横向合并列数;
所述叶子总数为节点应竖向合并的行数,所述分支高度为该分支下最大层级数。
数据处理后的节点对象包括以下属性:数据标识、节点标识、父节点标识、节点名称、是否是叶子节点,是否是横向合并节点、子节点数据以及原数据对象。
所述步骤S1中,在层级部分处理过程中,若处理节点是叶子节点,在回溯之前继续处理叶子属性部分内容,包括叶子属性部分输出的属性实例集合与叶子属性部分用到的属性集合;
所述叶子属性部分输出的属性中,包括但不限于文本、特殊样式和横向/竖向合并数量组成;所述横向/竖向合并数量由用户根据业务需要自定义设定到需要输出的属性实例中。
所述步骤S1中,叶子节点信息补充完整后,在单元格中实现数据或图片展示,所述图片为静态资源或根据数据生成的图表图片,通过单元格实现叶子节点的竖向/横向合并。
所述步骤S2中,维护一个长度与树层级数一致的数组,记录该列文本的最大长度和平均长度;
所述长度是指在实际打印过程中所占用的宽度,通过java语言中java.awt.FontMetrics的stringWidth(t)的方法根据输入字体字号进行计算。
若单元格中出现图片或其他占空间的容器,则额外获取高度宽度,并手动指定。
所述步骤S2中,如果是叶子属性部分单元格被竖向合并,则将该单元格实际占用高度除以竖向合并数,然后将计算结果赋值给叶子节点的第二高度集合。
所述步骤S2中,再次遍历整个树结构,计算单元格内容实际可用宽度和单元格总共占用高度,公式如下:
单元格内容实际可用宽度=通过列的宽度*横向合并数-单元格及子元素左右内边距之和-文本左右缩进之和 式(1)
本单元格总共占用高度=通过行数*字号*行距+段落前后距 式(2)
本次递归回溯时,取叶子节点本身高度和第二高度集合中的数值进行比较,取最大值作为叶子节点占用高度。
所述步骤S2中,当计算父节点高度时,将子节点占用高度之和与父节点实际占用高度进行对比,保留最大值作为父节点实际占用高度,以此类推。
每当计算叶子节点时,判断页面剩余高度是否能盛放,若能盛放就将内容转到新树结构中,若不能盛放,则在此处对树结构进行分割,分割规则如下:
本次递归回溯时,传递正在对树结构进行分割的状态标识,当前正在处理的叶子节点往上的每一级节点的竖向合并数量时,都要减去因为分割还未参与计算的部分,即只保留当前层次中正在处理的节点下标,分别作为每一级节点竖向合并数量;
当前节点下最大叶子节点数减去当前层次已处理叶子节点数为即为未处理的竖向合并数量,将其封装到新的树结构数据中,继续执行所述步骤S2中,再次遍历整个树结构及其后续的操作,直到数据按页分配完毕;
每次继续执所述步骤S2中,再次遍历整个树结构及其后续的操作前,将页面可用高度重置为页面最大高度,最终页面数据集合中的树结构即可适配页面高度实现分页。
所述步骤S2中,将关键标题内容、标题等级、页码及根据标题生成的特征码与对应页码一并加入目录集合中备用,所述特征码根据标题生成,用于标识标题的唯一性,无特定算法,作为内部超链接锚点标识使用。
所述步骤S3中,输出PDF文件时,页面数据集合每个树结构元素输出后都要手动换页,再换页期间,根据当前输出的段落标题实时修改页眉/页脚公共变量,在每页PDF输出的换页监听或回调函数中动态输出。
一种树形数据分页输出表格文档的系统,其特征在于包括树结构转换模块,合并规则管理模块,表格拆分模块和PDF文件生成模块;上述模块相互配合用于实现上述树形数据分页输出表格文档的方法。
本发明的有益效果是:该树形数据分页输出表格文档的方法与系统,实现了对树结构数据的转表、分页及整理必要信息计算操作的封装,补全了当前itext/poi插件生成表格形式的Word或PDF文件时在分页上的短板,使开发人员可以将更多精力投入到业务实现上。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
附图1为本发明树结构转换方法示意图。
具体实施方式
为了使本技术领域的人员更好的理解本发明中的技术方案,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚,完整的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
该树形数据分页输出表格文档的方法,在Java语言环境下使用itext插件,将医院考核分析报告生成表结构的PDF文档,包括以下步骤:
步骤S1、为医院考核分析报告中的医院属性数据设计树结构,计算表格层级部分合并需要的属性,包括但不限于数据标识、节点标识、父节点标识、节点名称、是否是叶子节点,是否是横向合并节点、子节点数据、横/竖向合并数量、占用高度和原数据对象,实现树结构转表格的自动合并功能;
步骤S2、对数据进行手动分页,主动设置分页后单元格内容;确定了对象嵌套的树结构的输出内容、横竖合并数量、每列的最大长度和平均长度后,以开放的形式提供接口,便于根据上述长度比例及表格总宽度确定每列的宽度返回;输出表格之前获取当前页面剩余可用高度,用于计算分页时拆分表格的位置;
再次遍历整个树结构,结合首行缩进宽度和逐字符占用的宽度,判断实际换行的情况,得到最终占用的行数;
对表格中的字体、字号、样式设置以及页面可用高度/宽度进行设置,动态分配列宽,并实现树结构数据分页功能,使分页后以及竖向合并单元格被拆分后的内容能够在相连页面中连续显示;
步骤S3、生成PDF格式的报告,将医院属性数据以树结构表格的形式进行显示,并将显示内容与水印、页眉页脚及目录进行联动设置与显示。
所述步骤S1中,首次递归对树结构各个节点的高度和宽度进行计算,结合叶子节点附带的其他业务属性,得到转表格后横向竖向单元格的合并规则;
所述步骤S2中,二次递归时通过对字号或内容宽高、行高、边距与边框因素进行计算,综合两个方向合并或综合合并的情况,判断实际生成中占用的高度和宽度,结合输出载体的可用高度对树结构进行按页拆分;
所述步骤S3中,添加固定的表头,综合分配各列宽度,同时处理目录与水印信息的计算处理过程,使其适用于树结构转表结构的场景。
所述步骤S1中,按照父节点标识排序,先将医院考核分析报告中的医院属性数据转换为树结构,递归时标识每个节点自根节点起算起的层级;
在递归回溯时,统计每个节点下的叶子总数与分支高度,并标记是否为叶子节点;若处理节点是叶子节点,将ROOT的最大层级数减去当前分支高度,即为该项内容横向合并列数;
所述叶子总数为节点应竖向合并的行数,所述分支高度为该分支下最大层级数。
数据处理后的节点对象包括以下属性:数据标识、节点标识、父节点标识、节点名称、是否是叶子节点,是否是横向合并节点、子节点数据以及原数据对象。
以上述方法处理后,数据输出可以实现医院考核分析报告的常规树形结构输出。如附图1所示,按照父节点标识排序,先将左侧数据转换为树结构,递归时标识每个节点自根节点起算起的层级。
所述步骤S1中,在层级部分处理过程中,若处理节点是叶子节点,在回溯之前继续处理叶子属性部分内容,包括叶子属性部分输出的属性实例集合与叶子属性部分用到的属性集合;
所述叶子属性部分输出的属性中,包括但不限于文本、特殊样式和横向/竖向合并数量组成;所述横向/竖向合并数量由用户根据业务需要自定义设定到需要输出的属性实例中。
所述步骤S1中,叶子节点信息补充完整后,在单元格中实现数据或图片展示,所述图片为静态资源或根据数据生成的图表图片,通过单元格实现叶子节点的竖向/横向合并。
至此,实现了pdf报告的完整导出,但目前分页依靠插件,导致竖向合并的单元格被分页后,内容只在第一页中出现,竖向合并的高级节点子项较多,导致跨页较多,这样该单元格在后面几页中展示时显示空白,影响阅读。为此在上述步骤的基础上通过以下操作进行手动分页,主动设置分页后单元格内容,防止空白的情况出现。
手动对数据分页时,在正式输出内容前确定目录内容,于某些目录支持不良的插件中使用时可以避免文档拆分再合并入目录的资源浪费。
所述步骤S2中,维护一个长度与树层级数一致的数组,记录该列文本的最大长度和平均长度;
所述长度是指在实际打印过程中所占用的宽度,通过java语言中java.awt.FontMetrics的stringWidth(t)的方法根据输入字体字号进行计算。
因不同类型字符所占宽度不同,单元格实际可用宽度不一定被完全利用,需要逐字符记录占用宽度,作为一个数组设定到需要输出的属性实例中,便于后续计算占用行数。
若单元格中出现图片或其他占空间的容器,则额外获取高度宽度,并手动指定。
所述步骤S2中,如果是叶子属性部分单元格被竖向合并,则将该单元格实际占用高度除以竖向合并数,然后将计算结果赋值给叶子节点的第二高度集合。
所述步骤S2中,再次遍历整个树结构,计算单元格内容实际可用宽度和单元格总共占用高度,公式如下:
单元格内容实际可用宽度=通过列的宽度*横向合并数-单元格及子元素左右内边距之和-文本左右缩进之和 式(1)
本单元格总共占用高度=通过行数*字号*行距+段落前后距 式(2)
本次递归回溯时,取叶子节点本身高度和第二高度集合中的数值进行比较,取最大值作为叶子节点占用高度。
所述步骤S2中,当计算父节点高度时,将子节点占用高度之和与父节点实际占用高度进行对比,保留最大值作为父节点实际占用高度,以此类推。
每当计算叶子节点时,判断页面剩余高度是否能盛放,若能盛放就将内容转到新树结构中,若不能盛放,则在此处对树结构进行分割,分割规则如下:
本次递归回溯时,传递正在对树结构进行分割的状态标识,当前正在处理的叶子节点往上的每一级节点的竖向合并数量时,都要减去因为分割还未参与计算的部分,即只保留当前层次中正在处理的节点下标,分别作为每一级节点竖向合并数量;
当前节点下最大叶子节点数减去当前层次已处理叶子节点数为即为未处理的竖向合并数量,将其封装到新的树结构数据中,继续执行所述步骤S2中,再次遍历整个树结构及其后续的操作,直到数据按页分配完毕;
每次继续执所述步骤S2中,再次遍历整个树结构及其后续的操作前,将页面可用高度重置为页面最大高度,最终页面数据集合中的树结构即可适配页面高度实现分页。
所述步骤S2中,将关键标题内容、标题等级、页码及根据标题生成的特征码与对应页码一并加入目录集合中备用,所述特征码根据标题生成,用于标识标题的唯一性,无特定算法,作为内部超链接锚点标识使用。
所述步骤S3中,输出PDF文件时,页面数据集合每个树结构元素输出后都要手动换页,再换页期间,根据当前输出的段落标题实时修改页眉/页脚公共变量(如果需要),在每页PDF输出的换页监听或回调函数中动态输出。
该树形数据分页输出表格文档的系统,包括树结构转换模块,合并规则管理模块,表格拆分模块和PDF文件生成模块;上述模块相互配合用于实现上述树形数据分页输出表格文档的方法。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种树形数据分页输出表格文档的方法,其特征在于:在Java语言环境下使用itext插件,将医院考核分析报告生成表结构的PDF文档,包括以下步骤:
步骤S1、为医院考核分析报告中的医院属性数据设计树结构,计算表格层级部分合并需要的属性,包括但不限于数据标识、节点标识、父节点标识、节点名称、是否是叶子节点,是否是横向合并节点、子节点数据、横/竖向合并数量、占用高度和原数据对象,实现树结构转表格的自动合并功能;
步骤S2、对数据进行手动分页,主动设置分页后单元格内容;确定了对象嵌套的树结构的输出内容、横竖合并数量、每列的最大长度和平均长度后,以开放的形式提供接口,便于根据上述长度比例及表格总宽度确定每列的宽度返回;输出表格之前获取当前页面剩余可用高度,用于计算分页时拆分表格的位置;
再次遍历整个树结构,结合首行缩进宽度和逐字符占用的宽度,判断实际换行的情况,得到最终占用的行数;
对表格中的字体、字号、样式设置以及页面可用高度/宽度进行设置,动态分配列宽,并实现树结构数据分页功能,使分页后以及竖向合并单元格被拆分后的内容能够在相连页面中连续显示;
步骤S3、生成PDF格式的报告,将医院属性数据以树结构表格的形式进行显示,并将显示内容与水印、页眉页脚及目录进行联动设置与显示。
2.根据权利要求1所述的树形数据分页输出表格文档的方法,其特征在于:所述步骤S1中,首次递归对树结构各个节点的高度和宽度进行计算,结合叶子节点附带的其他业务属性,得到转表格后横向竖向单元格的合并规则;
所述步骤S2中,二次递归时通过对字号或内容宽高、行高、边距与边框因素进行计算,综合两个方向合并或综合合并的情况,判断实际生成中占用的高度和宽度,结合输出载体的可用高度对树结构进行按页拆分;
所述步骤S3中,添加固定的表头,综合分配各列宽度,同时处理目录与水印信息的计算处理过程,使其适用于树结构转表结构的场景。
3.根据权利要求2所述的树形数据分页输出表格文档的方法,其特征在于:所述步骤S1中,按照父节点标识排序,先将医院考核分析报告中的医院属性数据转换为树结构,递归时标识每个节点自根节点起算起的层级;
在递归回溯时,统计每个节点下的叶子总数与分支高度,并标记是否为叶子节点;若处理节点是叶子节点,将ROOT的最大层级数减去当前分支高度,即为该项内容横向合并列数;
所述叶子总数为节点应竖向合并的行数,所述分支高度为该分支下最大层级数;
数据处理后的节点对象包括以下属性:数据标识、节点标识、父节点标识、节点名称、是否是叶子节点,是否是横向合并节点、子节点数据以及原数据对象。
4.根据权利要求3所述的树形数据分页输出表格文档的方法,其特征在于:所述步骤S1中,在层级部分处理过程中,若处理节点是叶子节点,在回溯之前继续处理叶子属性部分内容,包括叶子属性部分输出的属性实例集合与叶子属性部分用到的属性集合;
所述叶子属性部分输出的属性中,包括但不限于文本、特殊样式和横向/竖向合并数量组成;所述横向/竖向合并数量由用户根据业务需要自定义设定到需要输出的属性实例中;
叶子节点信息补充完整后,在单元格中实现数据或图片展示,所述图片为静态资源或根据数据生成的图表图片,通过单元格实现叶子节点的竖向/横向合并。
5.根据权利要求44所述的树形数据分页输出表格文档的方法,其特征在于:所述步骤S2中,维护一个长度与树层级数一致的数组,记录该列文本的最大长度和平均长度;
所述长度是指在实际打印过程中所占用的宽度,通过java语言中java.awt.FontMetrics的stringWidth(t)的方法根据输入字体字号进行计算;
若单元格中出现图片或其他占空间的容器,则额外获取高度宽度,并手动指定;
如果是叶子属性部分单元格被竖向合并,则将该单元格实际占用高度除以竖向合并数,然后将计算结果赋值给叶子节点的第二高度集合。
6.根据权利要求5所述的树形数据分页输出表格文档的方法,其特征在于:所述步骤S2中,再次遍历整个树结构,计算单元格内容实际可用宽度和单元格总共占用高度,公式如下:
单元格内容实际可用宽度=通过列的宽度*横向合并数-单元格及子元素左右内边距之和-文本左右缩进之和 式(1)
本单元格总共占用高度=通过行数*字号*行距+段落前后距 式(2)
本次递归回溯时,取叶子节点本身高度和第二高度集合中的数值进行比较,取最大值作为叶子节点占用高度。
7.根据权利要求6所述的树形数据分页输出表格文档的方法,其特征在于:所述步骤S2中,当计算父节点高度时,将子节点占用高度之和与父节点实际占用高度进行对比,保留最大值作为父节点实际占用高度;
每当计算叶子节点时,判断页面剩余高度是否能盛放,若能盛放就将内容转到新树结构中,若不能盛放,则在此处对树结构进行分割,分割规则如下:
本次递归回溯时,传递正在对树结构进行分割的状态标识,当前正在处理的叶子节点往上的每一级节点的竖向合并数量时,都要减去因为分割还未参与计算的部分,即只保留当前层次中正在处理的节点下标,分别作为每一级节点竖向合并数量;
当前节点下最大叶子节点数减去当前层次已处理叶子节点数为即为未处理的竖向合并数量,将其封装到新的树结构数据中,继续执行权利要求6所述的操作,直到数据按页分配完毕;
每次继续执权利要求6所述的操作前,要将页面可用高度重置为页面最大高度,最终页面数据集合中的树结构即可适配页面高度实现分页。
8.根据权利要求7所述的树形数据分页输出表格文档的方法,其特征在于:所述步骤S2中,将关键标题内容、标题等级、页码及根据标题生成的特征码与对应页码一并加入目录集合中备用,所述特征码根据标题生成,用于标识标题的唯一性,无特定算法,作为内部超链接锚点标识使用。
9.根据权利要求7所述的树形数据分页输出表格文档的方法,其特征在于:所述步骤S3中,输出PDF文件时,页面数据集合每个树结构元素输出后都要手动换页,再换页期间,根据当前输出的段落标题实时修改页眉/页脚公共变量,在每页PDF输出的换页监听或回调函数中动态输出。
10.一种树形数据分页输出表格文档的系统,其特征在于:包括树结构转换模块,合并规则管理模块,表格拆分模块和PDF文件生成模块;上述模块相互配合用于实现权利要求1~9所述的树形数据分页输出表格文档的方法。
CN202211032499.5A 2022-08-26 2022-08-26 一种树形数据分页输出表格文档的方法与系统 Pending CN115438638A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211032499.5A CN115438638A (zh) 2022-08-26 2022-08-26 一种树形数据分页输出表格文档的方法与系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211032499.5A CN115438638A (zh) 2022-08-26 2022-08-26 一种树形数据分页输出表格文档的方法与系统

Publications (1)

Publication Number Publication Date
CN115438638A true CN115438638A (zh) 2022-12-06

Family

ID=84243762

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211032499.5A Pending CN115438638A (zh) 2022-08-26 2022-08-26 一种树形数据分页输出表格文档的方法与系统

Country Status (1)

Country Link
CN (1) CN115438638A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116070596A (zh) * 2023-03-29 2023-05-05 深圳市奥思网络科技有限公司 基于动态数据的pdf文件生成方法、装置及相关介质
CN117539871A (zh) * 2024-01-09 2024-02-09 深圳市超越科技开发有限公司 菜单文本快速查找方法、装置、电子设备及存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116070596A (zh) * 2023-03-29 2023-05-05 深圳市奥思网络科技有限公司 基于动态数据的pdf文件生成方法、装置及相关介质
CN116070596B (zh) * 2023-03-29 2023-06-09 深圳市奥思网络科技有限公司 基于动态数据的pdf文件生成方法、装置及相关介质
CN117539871A (zh) * 2024-01-09 2024-02-09 深圳市超越科技开发有限公司 菜单文本快速查找方法、装置、电子设备及存储介质
CN117539871B (zh) * 2024-01-09 2024-04-26 深圳市超越科技开发有限公司 菜单文本快速查找方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN115438638A (zh) 一种树形数据分页输出表格文档的方法与系统
CN110968667B (zh) 一种基于文本状态特征的期刊文献表格抽取方法
JP4343213B2 (ja) 文書処理装置および文書処理方法
CN104598462B (zh) 提取结构化数据的方法及装置
US7756819B2 (en) Integrated authoring system for electronic technical manual and paper technical manual using logistics support analysis data and authoring method therefor
CN104063365B (zh) 在pdf文档中插入对象的方法
CN110990403A (zh) 业务数据的存储方法、系统、计算机设备及存储介质
CN112861489A (zh) 一种对word文档进行处理的方法和装置
CN114238575A (zh) 文档解析方法、系统、计算机设备及计算机可读存储介质
CN111797595A (zh) 一种基于xml模板生成ofd版式页面的方法和装置
CN110765402A (zh) 一种基于网络资源的可视化采集系统及采集方法
CN112527291A (zh) 网页生成方法、装置、电子设备及存储介质
CN108572817B (zh) 基于业务建模的资源动态配置的方法、装置和介质
CN113342907B (zh) 一种用能信息采集系统台区拓扑画像绘制方法与系统
CN115879435B (zh) 一种智慧工程场景下云端合同生成的方法
CN116501742A (zh) 一种简单灵活的表格数据采集输出方法、介质及系统
CN116562247A (zh) 电子表格内容生成方法、装置和计算机设备
CN109426458B (zh) 一种关系图的打印方法和装置
CN110928540A (zh) 一种页面生成方法及装置
CN113642291B (zh) 上市公司报告的逻辑结构树构建方法、系统、存储介质及终端
CN111126007B (zh) 一种基于html病历文书分页算法
CN113536762A (zh) Json文本的比对方法及装置
CN115169302B (zh) 一种基于在线表格文档的数据收集方法、装置及存储介质
CN110471661A (zh) 前端界面的数据描述方法及前端界面的生成方法
CN113792137B (zh) 一种中台研发物料检索方法、系统、智能终端和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination