CN116341506A - 一种迭代计算表格列宽的方法 - Google Patents

一种迭代计算表格列宽的方法 Download PDF

Info

Publication number
CN116341506A
CN116341506A CN202310599057.7A CN202310599057A CN116341506A CN 116341506 A CN116341506 A CN 116341506A CN 202310599057 A CN202310599057 A CN 202310599057A CN 116341506 A CN116341506 A CN 116341506A
Authority
CN
China
Prior art keywords
column
width
page
cell
columns
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.)
Granted
Application number
CN202310599057.7A
Other languages
English (en)
Other versions
CN116341506B (zh
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.)
Guangdong Jiena Pharmaceutical Technology Co ltd
Original Assignee
Guangdong Jiena Pharmaceutical 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 Guangdong Jiena Pharmaceutical Technology Co ltd filed Critical Guangdong Jiena Pharmaceutical Technology Co ltd
Priority to CN202310599057.7A priority Critical patent/CN116341506B/zh
Publication of CN116341506A publication Critical patent/CN116341506A/zh
Application granted granted Critical
Publication of CN116341506B publication Critical patent/CN116341506B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/183Tabulation, i.e. one-dimensional positioning
    • 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
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开一种迭代计算表格列宽的方法,包括以下步骤:S1:获取需要展示的表格、表格中每个单元格的内容、用于展示表格的页面的宽度和行数;S2:根据每个单元格中的内容,计算每个单元格的阶梯函数;S3:根据所述阶梯函数生成各列列宽的迭代范围,以迭代范围的最大值作为各列列宽的迭代起点;S4:若各列列宽的迭代起点之和不大于页面的宽度,直接得到各列列宽大小;若各列列宽的迭代起点之和大于页面的宽度,通过将同一列中所有单元格的阶梯函数聚合为整列的阶梯函数,迭代计算各列列宽大小,直至各列列宽之和不大于页面的宽度,得到各列列宽大小。本发明自动计算各列列宽用于调整表格列宽,效率较高。

Description

一种迭代计算表格列宽的方法
技术领域
本发明涉及自动化办公/表格处理技术领域,更具体地,涉及一种迭代计算表格列宽的方法。
背景技术
在众多领域如医药CRO(Contract Research Organization,合同研究组织)往往需要用表格来汇总、展示相关数据,这些表格有一定的约束条件,例如尽量合理排版使得总页数最少,列宽不能过窄以至于使该列的单词不得不折断到两行,一些特殊的数字尽量显示在一行,以及表格整体看起来分布均匀美观等等。好的表格排版一方面可以为用户提供更好的视觉体验;另一方面也可以提高表格的阅读、审阅效率。
目前在CRO业务中,根据监管要求,需要提交数据处理的SAS程序,因此输出的表格需要用SAS程序来生成。制表人员需要在程序中调整表格各列的列宽,执行程序后打开输出文件观察排版效果,如此反复,效率较为低下。随着数据量的不断增大,采用人工调整的方法可能会耗费大量时间且表格排版效果不佳。
在表格处理技术领域中,表格各列的列宽往往会影响表格的整体展示效果,在现实中最常见的作法是通过肉眼的直观感受对各列列宽进行调整,以达到一个良好的展示效果。
上述作法虽然可以调整表格各列列宽,使表格的直观感受更好,但通过肉眼的直观感受调整列宽往往“顾此失彼”且耗费较长时间。其一,当数据量超过一页时,通过肉眼往往会忽视其他页导致其他页的排版效果不好。其二,当数据量较大时,制表者调整某列的列宽后往往需要从头到尾观察所有数据记录的排版情况;其三,当中途加入一小部分数据记录时,可能会使前面调整好的列宽“前功尽弃”,从而浪费较多的精力和时间。
现有技术公开了调整表格列宽的方法及设备,其具体提出了一种通过触发操作点的方法进行表格列宽的调整;但其缺点是无法自动计算表格中各列的列宽大小。另一种现有技术公开了一种表格列宽的控制方法和装置,提出了一种通过计算表格数据中列表内容字段的长度,进而计算表格的列宽,但其缺点是通过计算最大字段长度或简单求平均进而确定表格列宽,效果较一般。
发明内容
本发明提供一种迭代计算表格列宽的方法,在满足一系列制表约束条件的前提下,自动优化表格列宽,提高表格制作效率。
为解决上述技术问题,本发明的技术方案如下:
一种迭代计算表格列宽的方法,包括以下步骤:
S1:获取需要展示的表格、表格中每个单元格的内容、用于展示表格的页面的宽度和行数;
S2:根据每个单元格中的内容,计算每个单元格的阶梯函数,所述阶梯函数为单元格需要占用的行数随着单元格宽度变化的函数;
S3:根据所述阶梯函数生成各列列宽的迭代范围,以迭代范围的最大值作为各列列宽的迭代起点;
S4:若各列列宽的迭代起点之和不大于页面的宽度,直接得到各列列宽大小;若各列列宽的迭代起点之和大于页面的宽度,通过将同一列中所有单元格的阶梯函数聚合为整列的阶梯函数,迭代计算各列列宽大小,直至各列列宽之和不大于页面的宽度,得到各列列宽大小。
优选地,步骤S1中用于展示表格的页面的宽度和行数的获取方法为:
根据用于展示表格的页面设置的纸张大小和设定的左右边距,获取用于展示表格的页面的宽度;
根据用于展示表格的页面设置的纸张大小、设定的上下边距和页眉页脚内容,获取用于展示表格的页面的高度,根据设定的字体将高度换算为用于展示表格的页面的行数。
优选地,步骤S2中根据每个单元格中的内容,计算每个单元格的阶梯函数,具体为:
根据每个单元格中的字体字号,计算每个单元格文本中每个单词和空格的宽度,在单词不被截断的基础上,根据每个单词和空格的宽度得到在不同单元格宽度下的每个单元格的行数,得到每个单元格的阶梯函数,所述阶梯函数的值根据单元格宽度的增大,呈阶梯下降。
优选地,步骤S3中根据所述阶梯函数生成各列列宽的迭代范围,具体为:
各列列宽的迭代范围最小值为一列中最长的单词不被截断的宽度,各列列宽的迭代范围最大值为一列中所有单元格都不会因列宽限制而换行时的宽度。
优选地,步骤S4中,当各列列宽的迭代起点之和等于页面的宽度,则各列的最终列宽为各列列宽的迭代起点。
优选地,步骤S4中,当各列列宽的迭代起点之和小于页面的宽度,将页面宽度减去各列列宽的迭代起点之和后剩下的宽度平均分给各列,得到各列列宽大小。
优选地,步骤S4中,当各列列宽的迭代起点之和大于页面的宽度,若各列列宽的迭代范围的最小值之和仍大于页面的宽度,则减少约束条件,重新计算各列列宽的迭代范围的最小值,直到各列列宽的迭代范围的最小值之和小于页面的宽度。
优选地,步骤S4中,当各列列宽的迭代起点之和大于页面的宽度,迭代计算各列列宽大小,具体为:
S401:将同一列中所有单元格的阶梯函数聚合为整列的阶梯函数,记为[(该列的列宽,[第一条数据记录所占的行数, 第二条数据记录所占的行数, …])],所述数据记录在表格中横向分割开的,自左至右贯通表格的一个整体区域,所述数据记录与列交叉的位置形成一个单元格;
S402:每列上升一个阶梯后,计算表格增加的行数、该列增加的行数、列宽变化量和此时列宽大小的相反数,组成一个四元组,所述上升一个阶梯指通过查询该列的阶梯函数,获知当列宽减少到附近阶梯的列宽时,会导致该列中各个单元格第一次重新排版并使得行数发生改变;
S403:比较所有列计算得到的四元组的大小,选择四元组最小的列,将所述四元组最小的列的列宽调整至对应阶梯的列宽,将所述四元组最小的列中各单元格依次调整行高,调整完毕后将该列的列号及四元组存入一个操作栈,所述比较所有列计算得到的四元组的大小具体为:从左到右依次比较两个四元组位置相同的数值大小,若当前位置的数值能比较出大小,直接以当前位置的数值大小作为四元组的大小结果,若当前位置的数值相等,则继续比较下一位置的数值大小,直到比较出结果为止;
S404:遍历当前操作栈,当第A列的调整带来的表格行数增加总数大于步骤S403中单次调整第B列带来的表格行数增加总数,则将对第A列的相关操作全部出栈,改为调整第B列,且第A列的列宽调整操作数是N,也将第A列列宽恢复为N次调整前的数字,改为将第B列上升一个阶梯;
S405:重复步骤S402至S404,直到表格占用的总宽度小于等于页面宽度为止,此时得到各列列宽大小。
优选地,还包括步骤S406:在步骤S405得到的各列列宽大小的基础上,进一步缩小各列的列宽,在缩小过程中遵循以下原则:
a.只导致某些单元格内部行数增加,但因为该单元格所在的记录有更高的单元格,因此不会导致整个表格行数增加;
b.满足a时尽量缩小各列列宽,直到已无法调整为止。
优选地,还包括步骤S407:获取当前表格各列的列宽,进行加和操作得到当前表格宽度,利用页面宽度减去当前表格宽度得到富余列宽,将富余列宽分配到各列中,直到表格宽度等于页面宽度,分配的原则为:
在保证各列的阶梯不发生变化的前提下,尽量多的增加列宽;同时尽量平均的将富余列宽分配到各列。
与现有技术相比,本发明技术方案的有益效果是:
使用本发明所提出的计算表格列宽的方法,可以根据需要展示的数据集、需要展示的字体、设定的页边距等,获取相应的各列列宽;其次,本发明既适用于小数据集也适用于大数据集,可以较快的计算出各列列宽,效率较高;最后,本发明是全自动的,不需要用户肉眼观察并参与计算决策,可以节约大量的人力与精力。
附图说明
图1为本发明的方法流程示意图。
图2为本发明实施例提供的方法流程示意图。
图3为本发明实施例提供的排版效果示意图。
具体实施方式
附图仅用于示例性说明,不能理解为对本申请的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例1
本实施例提供一种迭代计算表格列宽的方法,如图1所示,包括以下步骤:
S1:获取需要展示的表格、表格中每个单元格的内容、用于展示表格的页面的宽度和行数;
S2:根据每个单元格中的内容,计算每个单元格的阶梯函数,所述阶梯函数为单元格需要占用的行数随着单元格宽度变化的函数;
S3:根据所述阶梯函数生成各列列宽的迭代范围,以迭代范围的最大值作为各列列宽的迭代起点;
S4:若各列列宽的迭代起点之和不大于页面的宽度,直接得到各列列宽大小;若各列列宽的迭代起点之和大于页面的宽度,通过将同一列中所有单元格的阶梯函数聚合为整列的阶梯函数,迭代计算各列列宽大小,直至各列列宽之和不大于页面的宽度,得到各列列宽大小。
本实施例的表格为存放结构化数据的一种二维数据结构,由横向的“记录”和纵向的“列”交织而成。位于表格顶端的部分称为表头,表头通常用于描述各列的整体信息。表头在每一页中会重复出现,以使得单独阅览该页时也能知道表格展示的内容和意义。
上述的表格的列在表格中被纵向分割开的,自上至下贯通整个表格的一个整体区域。
上述的表格的记录在表格中被横向分割开的,自左至右贯通表格的一个整体区域。在其他文献中也称作“行”,但在本实施例中,为与指代单排文字的“行”区分,将其称为记录。一条记录可以占用数行的高度,视记录中的内容与列宽而定。
列与记录交叉的位置会形成一个单元格。单元格是表格的基本单位,一个列中的所有单元格共享宽度,一条记录中的单元格共享高度,通常以该记录中占用行数最多的单元格的高度为整条记录的高度。一个单元格内通常会容纳一些文字,这些文字受限于单元格的尺寸而排布,若单元格宽度不足以容纳文本,则会将文本在合适的位置换行以将其装入单元格中,同时增加单元格高度以使文本被全部展示出来。换行的位置选择受到一系列条件约束,例如不应将单词折断到两行,不同的标点符号应与相应位置的文本保持连接,数字不应在小数点处断行等等。
字体和字号决定文字展示效果的参数。通常CRO中整个表格的字体与字号是一致的。字体与字号决定了文本内容在显示时需要占用的宽度与高度。
本发明实施例提出了一种利用迭代的方法计算表格列宽的方法,即当列宽之和大于页面可用宽度时,使用迭代的方法不断迭代获得各列列宽。
实施例2
本实施例在实施例1的基础上,继续公开以下内容:
步骤S1中用于展示表格的页面的宽度和行数的获取方法为:
根据用于展示表格的页面设置的纸张大小和设定的左右边距,获取用于展示表格的页面的宽度;
根据用于展示表格的页面设置的纸张大小、设定的上下边距和页眉页脚内容,获取用于展示表格的页面的高度,根据设定的字体将高度换算为用于展示表格的页面的行数。
步骤S2中根据每个单元格中的内容,计算每个单元格的阶梯函数,具体为:
阶梯函数即分段常值函数,根据每个单元格中的字体字号,计算每个单元格文本中每个单词和空格的宽度,在单词不被截断的基础上,根据每个单词和空格的宽度得到在不同单元格宽度下的每个单元格的行数,得到每个单元格的阶梯函数,由于列宽可以连续变化,但行数取值范围为整数,因此该函数图像为随着横轴增大,值呈阶梯下降,故命名为“阶梯函数”,表格中每个单元格均有一个阶梯函数。
在具体的实施例中,在步骤S1中给定输入表格与字体字号的基础上,计算表格中每个单元格文本中每个单词的宽度(单词不被截断),进而计算出每个单元格在不同宽度下的阶梯函数,以“Infections and infestations”为例,当字体为Times New Roman,字号为10.5pt时,若该列的列宽宽度为0.68inch,该文本需要三行高度;当该列的列宽宽度为0.84inch时,该文本需要两行高度;当该列的列宽宽度为1.54inch时,该文本仅需一行高度。由此形成阶梯函数。
步骤S3中根据所述阶梯函数生成各列列宽的迭代范围,具体为:
各列列宽的迭代范围最小值为一列中最长的单词不被截断的宽度,各列列宽的迭代范围最大值为一列中所有单元格都不会因列宽限制而换行时的宽度。单元格中的内容可以包括换行符,因此单元格内容可以有多行。不因列宽限制而换行的意思是列宽足够宽,使得该列中没有单元格中的行数等于该单元格内容中换行符的个数+1。
步骤S4中,当各列列宽的迭代起点之和等于页面的宽度,则各列的最终列宽为各列列宽的迭代起点。
步骤S4中,当各列列宽的迭代起点之和小于页面的宽度,即表格内容不需要占用整个页面,将页面宽度减去各列列宽的迭代起点之和后剩下的宽度平均分给各列,若出现精度剩余再进行微调直至使用完整个页面可用宽度,从而获得各列的列宽大小。在具体的实施例中,微调的方法是使得内容更宽的列在平均分配剩余宽度时能够获得更多一些列宽。一个例子中,剩余列宽是0.07inch,需要分布到4列,则先给各列分配0.01inch,再将剩下的0.03inch平均分配给4列中内容宽度较长的3列。
步骤S4中,当各列列宽的迭代起点之和大于页面的宽度,若各列列宽的迭代范围的最小值之和仍大于页面的宽度,计算过程中减少约束条件,例如允许长单词折行,或允许长数字折行等等,重新计算各列列宽的迭代范围的最小值,直到各列列宽的迭代范围的最小值之和小于页面的宽度。
步骤S4中,当各列列宽的迭代起点之和大于页面的宽度,迭代计算各列列宽大小,具体为:
S401:将同一列中所有单元格的阶梯函数聚合为整列的阶梯函数,记为[(该列的列宽,[第一条数据记录所占的行数, 第二条数据记录所占的行数, …])],所述数据记录在表格中横向分割开的,自左至右贯通表格的一个整体区域,所述数据记录与列交叉的位置形成一个单元格;在具体的实施例中,[(43,[5,1,1,1,1]),(56,[4,1,1,1,1])]表示当该列的列宽为0.43inch时,五条数据记录所占的行数分别为5、1、1、1、1,当列宽增加到0.56inch时,五条记录所占的行数分别为4、1、1、1、1。
S402:每列上升一个阶梯后,计算表格增加的行数、该列增加的行数、列宽变化量和此时列宽大小的相反数,组成一个四元组,所述上升一个阶梯指通过查询该列的阶梯函数,获知当列宽减少到附近阶梯的列宽时,会导致该列中各个单元格第一次重新排版并使得行数发生改变;如迭代过程S401中的列宽由0.56inch减少至0.43inch时,对应上升一个阶梯,此时的四元组为(1,1,0,-43)。单元格的行数发生改变会带来两个影响,其一,当单元格已经是该条记录中最高的单元格时,增加行数会导致整条记录的高度增高,也即会导致整个表格行数增大。其二,当单元格的高度不是所在记录的最高时,增加单元格内文本的行数并不会导致整个表格的行数增加,反而会使得表格看起来更为紧凑,对表格视觉效果有正向促进作用。
S403:比较所有列计算得到的四元组的大小,选择四元组最小的列,将所述四元组最小的列的列宽调整至对应阶梯的列宽,将所述四元组最小的列中各单元格依次调整行高,调整完毕后将该列的列号及四元组存入一个操作栈,所述比较所有列计算得到的四元组的大小具体为:从左到右依次比较两个四元组位置相同的数值大小,若当前位置的数值能比较出大小,直接以当前位置的数值大小作为四元组的大小结果,若当前位置的数值相等,则继续比较下一位置的数值大小,直到比较出结果为止;
S404:遍历当前操作栈,当第A列的调整带来的表格行数增加总数大于步骤S403中单次调整第B列带来的表格行数增加总数,则将对第A列的相关操作全部出栈,改为调整第B列,且第A列的列宽调整操作数是N,也将第A列列宽恢复为N次调整前的数字,改为将第B列上升一个阶梯;这一步操作的目的是防止算法收敛到局部最优值,而无法找到全局最优值。
S405:重复步骤S402至S404,直到表格占用的总宽度小于等于页面宽度为止,此时得到各列列宽大小。
本实施例根据表格列宽视觉效果进行优化的方法,即当迭代算法收敛后表格列宽之和小于页面可用宽度时,根据表格列宽视觉效果进行微调,从而获得表格各列列宽。
实施例3
本实施例在实施例1和实施例2的基础上,继续公开以下内容:
还包括步骤S406:在步骤S405得到的各列列宽大小的基础上,进一步缩小各列的列宽,在缩小过程中遵循以下原则:
a.只导致某些单元格内部行数增加,但因为该单元格所在的记录有更高的单元格,因此不会导致整个表格行数增加;
b.满足a时尽量缩小各列列宽,直到已无法调整为止。
还包括步骤S407:获取当前表格各列的列宽,进行加和操作得到当前表格宽度,利用页面宽度减去当前表格宽度得到富余列宽,将富余列宽分配到各列中,直到表格宽度等于页面宽度,分配的原则为:
在保证各列的阶梯不发生变化的前提下,尽量多的增加列宽;同时尽量平均的将富余列宽分配到各列。
步骤S406和S407的目的是让表格在满足总行数最小的前提下排版均匀,各列间隔合理,视觉效果最优。
本实施例全程不需要人工决策,即可生成视觉效果最好的表格列宽,加强了可用性。
在具体的实施例中,对一些数据集使用rtf文件进行展示,数据集示范如下:
Figure SMS_1
Figure SMS_2
Figure SMS_3
利用本发明的方法,经如图2所示的步骤计算,所得的列宽为:[1.83inch,1.42inch, 1.42inch, 1.48inch, 1.45inch, 1.45inch, 0.59inch]。
最后的排版效果如图3所示,本实施例节省了表格调整的大量时间以及提高了表格的视觉效果。
相同或相似的标号对应相同或相似的部件;
附图中描述位置关系的用语仅用于示例性说明,不能理解为对本申请的限制;
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

Claims (10)

1.一种迭代计算表格列宽的方法,其特征在于,包括以下步骤:
S1:获取需要展示的表格、表格中每个单元格的内容、用于展示表格的页面的宽度和行数;
S2:根据每个单元格中的内容,计算每个单元格的阶梯函数,所述阶梯函数为单元格需要占用的行数随着单元格宽度变化的函数;
S3:根据所述阶梯函数生成各列列宽的迭代范围,以迭代范围的最大值作为各列列宽的迭代起点;
S4:若各列列宽的迭代起点之和不大于页面的宽度,直接得到各列列宽大小;若各列列宽的迭代起点之和大于页面的宽度,通过将同一列中所有单元格的阶梯函数聚合为整列的阶梯函数,迭代计算各列列宽大小,直至各列列宽之和不大于页面的宽度,得到各列列宽大小。
2.根据权利要求1所述的迭代计算表格列宽的方法,其特征在于,步骤S1中用于展示表格的页面的宽度和行数的获取方法为:
根据用于展示表格的页面设置的纸张大小和设定的左右边距,获取用于展示表格的页面的宽度;
根据用于展示表格的页面设置的纸张大小、设定的上下边距和页眉页脚内容,获取用于展示表格的页面的高度,根据设定的字体将高度换算为用于展示表格的页面的行数。
3.根据权利要求1所述的迭代计算表格列宽的方法,其特征在于,步骤S2中根据每个单元格中的内容,计算每个单元格的阶梯函数,具体为:
根据每个单元格中的字体字号,计算每个单元格文本中每个单词与空格的宽度,在单词不被截断的基础上,根据每个单词与空格的宽度得到在不同单元格宽度下的每个单元格的行数,得到每个单元格的阶梯函数,所述阶梯函数的值根据单元格宽度的增大,呈阶梯下降。
4.根据权利要求1所述的迭代计算表格列宽的方法,其特征在于,步骤S3中根据所述阶梯函数生成各列列宽的迭代范围,具体为:
各列列宽的迭代范围最小值为一列中最长的单词不被截断的宽度,各列列宽的迭代范围最大值为一列中所有单元格都不会因列宽限制而换行时的宽度。
5.根据权利要求1至4任一项所述的迭代计算表格列宽的方法,其特征在于,步骤S4中,当各列列宽的迭代起点之和等于页面的宽度,则各列的最终列宽为各列列宽的迭代起点。
6.根据权利要求1至4任一项所述的迭代计算表格列宽的方法,其特征在于,步骤S4中,当各列列宽的迭代起点之和小于页面的宽度,将页面宽度减去各列列宽的迭代起点之和后剩下的宽度平均分给各列,得到各列列宽大小。
7.根据权利要求1至4任一项所述的迭代计算表格列宽的方法,其特征在于,步骤S4中,当各列列宽的迭代起点之和大于页面的宽度,若各列列宽的迭代范围的最小值之和仍大于页面的宽度,则减少约束条件,重新计算各列列宽的迭代范围的最小值,直到各列列宽的迭代范围的最小值之和小于页面的宽度。
8.根据权利要求7所述的迭代计算表格列宽的方法,其特征在于,步骤S4中,当各列列宽的迭代起点之和大于页面的宽度,迭代计算各列列宽大小,具体为:
S401:将同一列中所有单元格的阶梯函数聚合为整列的阶梯函数,记为[(该列的列宽,[第一条数据记录所占的行数, 第二条数据记录所占的行数, …])],所述数据记录在表格中横向分割开的,自左至右贯通表格的一个整体区域,所述数据记录与列交叉的位置形成一个单元格;
S402:每列上升一个阶梯后,计算表格增加的行数、该列增加的行数、列宽变化量和此时列宽大小的相反数,组成一个四元组,所述上升一个阶梯指通过查询该列的阶梯函数,获知当列宽减少到附近阶梯的列宽时,会导致该列中各个单元格第一次重新排版并使得行数发生改变;
S403:比较所有列计算得到的四元组的大小,选择四元组最小的列,将所述四元组最小的列的列宽调整至对应阶梯的列宽,将所述四元组最小的列中各单元格依次调整行高,调整完毕后将该列的列号及四元组存入一个操作栈,所述比较所有列计算得到的四元组的大小具体为:从左到右依次比较两个四元组位置相同的数值大小,若当前位置的数值能比较出大小,直接以当前位置的数值大小作为四元组的大小结果,若当前位置的数值相等,则继续比较下一位置的数值大小,直到比较出结果为止;
S404:遍历当前操作栈,当第A列的调整带来的表格行数增加总数大于步骤S403中单次调整第B列带来的表格行数增加总数,则将对第A列的相关操作全部出栈,改为调整第B列,且第A列的列宽调整操作数是N,也将第A列列宽恢复为N次调整前的数字,改为将第B列上升一个阶梯;
S405:重复步骤S402至S404,直到表格占用的总宽度小于等于页面宽度为止,此时得到各列列宽大小。
9.根据权利要求8所述的迭代计算表格列宽的方法,其特征在于,还包括步骤S406:在步骤S405得到的各列列宽大小的基础上,进一步缩小各列的列宽,在缩小过程中遵循以下原则:
a.只导致某些单元格内部行数增加,但因为该单元格所在的记录有更高的单元格,因此不会导致整个表格行数增加;
b.满足a时尽量缩小各列列宽,直到已无法调整为止。
10.根据权利要求9所述的迭代计算表格列宽的方法,其特征在于,还包括步骤S407:获取当前表格各列的列宽,进行加和操作得到当前表格宽度,利用页面宽度减去当前表格宽度得到富余列宽,将富余列宽分配到各列中,直到表格宽度等于页面宽度,分配的原则为:
在保证各列的阶梯不发生变化的前提下,尽量多的增加列宽;同时尽量平均的将富余列宽分配到各列。
CN202310599057.7A 2023-05-25 2023-05-25 一种迭代计算表格列宽的方法 Active CN116341506B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310599057.7A CN116341506B (zh) 2023-05-25 2023-05-25 一种迭代计算表格列宽的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310599057.7A CN116341506B (zh) 2023-05-25 2023-05-25 一种迭代计算表格列宽的方法

Publications (2)

Publication Number Publication Date
CN116341506A true CN116341506A (zh) 2023-06-27
CN116341506B CN116341506B (zh) 2023-08-25

Family

ID=86887977

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310599057.7A Active CN116341506B (zh) 2023-05-25 2023-05-25 一种迭代计算表格列宽的方法

Country Status (1)

Country Link
CN (1) CN116341506B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100100803A1 (en) * 2007-06-28 2010-04-22 Fujitsu Limited Computer product, spreadsheet generating apparatus, and spreadsheet generating method
CN102103581A (zh) * 2009-12-17 2011-06-22 珠海金山软件有限公司 一种利用计算机在表格中追加行列的方法及系统
JP2015170011A (ja) * 2014-03-05 2015-09-28 日本電気株式会社 表レイアウト生成装置
CN106681972A (zh) * 2015-11-11 2017-05-17 北京国双科技有限公司 表格显示方法及装置
CN111444452A (zh) * 2020-02-21 2020-07-24 广州杰赛科技股份有限公司 网页页面的转换方法、装置及存储介质
CN113268949A (zh) * 2021-06-23 2021-08-17 深圳平安智汇企业信息管理有限公司 基于动态字段的表格展示方法、装置、计算机设备及介质
CN114004203A (zh) * 2021-10-25 2022-02-01 杭州网易竹书信息技术有限公司 一种表格调整方法、装置、电子设备及存储介质
CN115935925A (zh) * 2022-10-28 2023-04-07 上海乾臻信息科技有限公司 表格适配方法、电子设备及计算机可读存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100100803A1 (en) * 2007-06-28 2010-04-22 Fujitsu Limited Computer product, spreadsheet generating apparatus, and spreadsheet generating method
CN102103581A (zh) * 2009-12-17 2011-06-22 珠海金山软件有限公司 一种利用计算机在表格中追加行列的方法及系统
JP2015170011A (ja) * 2014-03-05 2015-09-28 日本電気株式会社 表レイアウト生成装置
CN106681972A (zh) * 2015-11-11 2017-05-17 北京国双科技有限公司 表格显示方法及装置
CN111444452A (zh) * 2020-02-21 2020-07-24 广州杰赛科技股份有限公司 网页页面的转换方法、装置及存储介质
CN113268949A (zh) * 2021-06-23 2021-08-17 深圳平安智汇企业信息管理有限公司 基于动态字段的表格展示方法、装置、计算机设备及介质
CN114004203A (zh) * 2021-10-25 2022-02-01 杭州网易竹书信息技术有限公司 一种表格调整方法、装置、电子设备及存储介质
CN115935925A (zh) * 2022-10-28 2023-04-07 上海乾臻信息科技有限公司 表格适配方法、电子设备及计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张申亚: "基于Linux的嵌入式浏览器的设计及实现", 《信阳师范学院学报(自然科学版)》, vol. 20, no. 4, pages 499 - 501 *

Also Published As

Publication number Publication date
CN116341506B (zh) 2023-08-25

Similar Documents

Publication Publication Date Title
US8001465B2 (en) Compacting an information array display to cope with two dimensional display space constraint
US6414698B1 (en) Method for enabling adaptive sizing of display elements
US6415305B1 (en) Method for displaying editable characters in a divided table cell
EP0117406B1 (en) Automatically balancing and vertically justifying text and/or graphics
US7797624B2 (en) Automated paragraph layout
US20080005658A1 (en) Table column spanning
US20070074109A1 (en) Document production system, document production method, program, and storage medium
EA012487B1 (ru) Способ отображения данных в таблице
CN103678268B (zh) 公文自动排版方法和装置
US10061750B2 (en) Arranging elements in a layout
AU2014100875A4 (en) Methods, apparatus and systems for data sorting, visualisation and related applications
US20120304042A1 (en) Parallel automated document composition
US20140173397A1 (en) Automated Document Composition Using Clusters
CN107491422A (zh) 文字显示方法、装置及电子设备
CN116341506B (zh) 一种迭代计算表格列宽的方法
US20240143898A1 (en) Content typesetting method and apparatus, computer device, and storage medium
CN104978407B (zh) 用于高维数据特征属性变化趋势的可视化呈现系统及方法
CN108595396B (zh) 一种简历的自动生成方法及终端
US7123261B2 (en) Coordinating grid tracking and mojikumi spacing of Japanese text
US10482173B2 (en) Quality distributions for automated document
CN113935300A (zh) 一种动态表格生成方法及装置
CN113420535A (zh) 基于vba的矩阵图表生成方法及系统
CN112286603A (zh) 一种表格展示方法、装置、电子设备及存储介质
JP2014021694A (ja) 携帯情報端末、携帯情報端末の表組表示方法、及び携帯情報端末の表組表示プログラム
JP3173188B2 (ja) 文字配置決定装置及びワークステーション

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
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A Method for Iterative Calculation of Table Column Width

Granted publication date: 20230825

Pledgee: Industrial and Commercial Bank of China Limited Guangzhou tianpingjia sub branch

Pledgor: Guangdong Jiena Pharmaceutical Technology Co.,Ltd.

Registration number: Y2024980006431