下级表头生成装置和下级表头生成方法 技术领域 本发明涉及计算机技术领域, 具体而言, 涉及一种下级表头生成装置和一种下级 表头生成法。
背景技术 在信息化高速发展的今天, 企业信息系统的普及不仅实现了企业资源的合理调 度, 确保了资源利用最大化, 同时也提高了内部从业人员的工作效率, 减轻了工作量, 有效 地促进了企业管理的现代化、 科学化, 强化了企业间的联系, 有利于形成共同发展的生存 链。
例如, 在全面预算领域, 尤其在中国, 由于 Excel 高度灵活的格式设计功能以及用 户的长期使用习惯, Excel 电子表格仍然作为预算编制和管理的主要工具, 应用于大多数企 业的信息系统中。
企业部署预算系统的时候, 首先需要实施人员根据企业的日常业务进行预算表单 的格式设计, 并将其保存作为以后录入企业数据信息的固定模板。 当然, 企业的业务活动越 复杂, 表单的设计难度也会越大。 尤其是企业财务会计管理或预算控制等业务, 会涉及到很 多复杂的预算报表, 如资产负债表、 利润表、 现金流量表等等, 这对于实施人员而言无疑是 一项十分繁琐的工作, 这就要求信息系统的表单格式设计过程要尽可能的简单、 优化, 才能 有效地减少实施人员和企业会计人员的工作量。
图 1 是一个在企业全面预算系统中比较常见的费用预算表。如图 1 所示, 行表头 包含公司和费用项目两级表头, 列表头包含季度和月份两级表头, 中间区域记录的是在各 公司在上半年不同月份的具体费用预算, 如 A 公司预计 1 季度 1 月份的差旅费用预算总共 为 3100 元。
用现有的方法来设计图 1 的表单格式, 一般需要设计者首先在头脑中勾勒出整个 表头的最终完成样式, 然后才开始进行表头项目的填写。以行表头为例, 按照一般习惯, 在 进行这种多级表头设计时, 我们需要进行的操作步骤主要包括 :
1) 在 A4、 A7、 A9、 B4、 B5、 B6、 B7、 B8、 B9、 B10、 B11 单元格分别填写相应的公司及费 用项目的行表头信息。
2) 将 A4 ~ A6、 A7 ~ A8、 A9 ~ A11 区域的单元格分别进行合并。
上述设计思路虽然不是很复杂, 但是还是存在着很多方面的不足之处 :
1) 过多的重复性工作 :
从上述表单中可以看出, 其实 A、 C 公司对应的费用项目是完全一致的, 可是在实 际录入过程中却进行了两次重复性的录入工作。而且, 实际业务中的公司数量远远不止两 个这么简单, 我们假设这些公司都对应着相同的费用项目, 这就意味着我们要进行更多次 的重复操作, 即使我们可以通过使用复制 / 粘贴的功能来对其进行简化, 但是, 这种重复性 的工作量还是不可避免的。
2) 容易产生人为失误 :
由于填写多级表头信息的工作是完全通过手工录入的, 这就需要我们首先明确各 个公司分别对应的费用项目及其数量, 以便于在录入过程中将其填写至正确的单元格, 一 旦由于人为失误导致多填或漏填了某些费用项目, 则修改起来就会比较麻烦。
在企业信息系统的实际业务活动中, 类似表单的格式设计是很普遍的, 所以, 需求 一种基于 Excel 的生成表格相同下级表头的简化的技术方案, 能够可以减少用户机械式的 重复录入, 提高表格设计的效率, 同时也可以避免一些不必要的错误录入, 使表格设计更为 简单易用。 发明内容
本发明所要解决的技术问题在于, 提供一种基于 Excel 的生成表格相同下级表头 的简化的技术方案, 能够可以减少用户机械式的重复录入, 提高表格设计的效率, 同时也可 以避免一些不必要的错误录入, 使表格设计更为简单易用。
有鉴于此, 本发明提供一种下级表头生成装置, 包括 : 行列增加模块, 在表格中, 根 据待填充进下级表头的数据的数量, 增加预定个数的行或列, 其中, 预定个数的行或列与待 生成下级表头的单元格的所在行或列相邻接 ; 数据填充模块, 取得同时位于单元格的所在 列或行的邻接列或行, 以及单元格的所在行或列和预定个数的行或列中的所有单元格, 以 用于填充数据。通过该技术方案, 能够自动进行行列填充, 以进行下级表头的生成。
在上述技术方案中, 优选地, 还包括 : 覆盖处理模块, 存在待生成下级表头的其他 单元格时, 判断单元格的所在列或行与其他单元格的所在列或行是否邻接, 并在判断结果 为是时, 在单元格的所在列与其他单元格的所在列或行之间, 增加一列或行。 通过该技术方 案, 可以避免生成的表头覆盖了其他表头。
在上述技术方案中, 优选地, 还包括 : 重复处理模块, 存在待生成下级表头的其他 单元格时, 判断单元格与其他单元格是否位于同一列或行中, 并在判断结果为是时, 确认已 增加了预定个数的行或列, 通知数据填充模块直接进行数据的填充。 通过该技术方案, 避免 了生成多余的行列, 影响表头数据的填充。
在上述技术方案中, 优选地, 还包括 : 填充方式模块, 设置填充方式, 其中, 填充方 式的类型包括合并方式和两列方式, 在填充方式为合并方式时, 预定个数为数据的数量减 去一, 在填充方式为两列方式时, 预定个数为数据的数量。
在上述技术方案中, 优选地, 数据填充模块在填充方式为合并方式时, 还将预定个 数的行或列中的与单元格位于同一列或行的单元格, 与单元格合并, 在填充方式为两列方 式时, 直接取得同时位于单元格的所在列或行的邻接列或行, 以及预定个数的行或列中的 所有单元格, 以用于填充数据。
本发明还提供一种下级表头生成方法, 包括 : 步骤 302, 在表格中, 根据待填充进 下级表头的数据的数量, 增加预定个数的行或列, 其中, 预定个数的行或列与待生成下级表 头的单元格的所在行或列相邻接 ; 步骤 304, 取得同时位于单元格的所在列或行的邻接列 或行, 以及单元格的所在行或列和预定个数的行或列中的所有单元格, 以用于填充数据。 通 过该技术方案, 能够自动进行行列填充, 以进行下级表头的生成。
在上述技术方案中, 优选地, 在步骤 304 之前, 还包括 : 存在待生成下级表头的其 他单元格时, 判断单元格的所在列或行与其他单元格的所在列或行是否邻接, 并在判断结果为是时, 在单元格的所在列与其他单元格的所在列或行之间, 增加一列或行。 通过该技术 方案, 可以避免生成的表头覆盖了其他表头。
在上述技术方案中, 优选地, 在步骤 302 之前, 还包括 : 存在待生成下级表头的其 他单元格时, 判断单元格与其他单元格是否位于同一列或行中, 并在判断结果为是时, 确认 已增加了预定个数的行或列, 并直接进入步骤 304。通过该技术方案, 避免了生成多余的行 列, 影响表头数据的填充。
在上述技术方案中, 优选地, 在步骤 302 之前, 还包括 : 设置填充方式, 其中, 填充 方式的类型包括合并方式和两列方式, 在填充方式为合并方式时, 预定个数为数据的数量 减去一, 在填充方式为两列方式时, 预定个数为数据的数量。
在上述技术方案中, 优选地, 在步骤 304 中, 在填充方式为合并方式时, 还将预定 个数的行或列中的与单元格位于同一列或行的单元格, 与单元格合并, 在填充方式为两列 方式时, 直接取得同时位于单元格的所在列或行的邻接列或行, 以及预定个数的行或列中 的所有单元格, 以用于填充数据。
通过以上技术方案, 可以实现一种下级表头生成装置和一种下级表头生成方法, 能够可以减少用户机械式的重复录入, 提高表格设计的效率, 同时也可以避免一些不必要 的错误录入, 使表格设计更为简单易用。 附图说明 图 1 是一个表格的示意图 ;
图 2 是根据本发明的一个实施例的下级表头生成装置的框图 ;
图 3 是根据本发明的一个实施例的下级表头生成方法的流程图 ;
图 4 是一个需生成下级表头的表格的示意图 ;
图 5 是根据本发明的一个实施例的下级表头生成方法完成下级表头生成后的表 格示意图 ;
图 6 是根据本发明的一个实施例的下级表头生成方法完成下级表头生成后的表 格示意图 ;
图 7 是一个需要生成下级表头的表格的示意图 ;
图 8 是根据本发明的一个实施例的下级表头生成方法完成下级表头生成后的表 格示意图 ;
图 9 是根据本发明的一个实施例的下级表头生成方法的流程示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、 特征和优点, 下面结合附图和具体实 施方式对本发明进行进一步的详细描述。
在下面的描述中阐述了很多具体细节以便于充分理解本发明, 但是, 本发明还可 以采用其他不同于在此描述的其他方式来实施, 因此, 本发明并不限于下面公开的具体实 施例的限制。
图 2 是根据本发明的一个实施例的下级表头生成装置的框图。
如图 2 所示, 本发明提供一种下级表头生成装置 200, 包括 : 行列增加模块 202, 在表格中, 根据待填充进下级表头的数据的数量, 增加预定个数的行或列, 其中, 预定个数的 行或列与待生成下级表头的单元格的所在行或列相邻接 ; 数据填充模块 204, 取得同时位 于单元格的所在列或行的邻接列或行, 以及单元格的所在行或列和预定个数的行或列中的 所有单元格, 以用于填充数据。通过该技术方案, 能够自动进行行列填充, 以进行下级表头 的生成。
在上述技术方案中, 还包括 : 覆盖处理模块 206, 存在待生成下级表头的其他单元 格时, 判断单元格的所在列或行与其他单元格的所在列或行是否邻接, 并在判断结果为是 时, 在单元格的所在列与其他单元格的所在列或行之间, 增加一列或行。通过该技术方案, 可以避免生成的表头覆盖了其他表头。
在上述技术方案中, 还包括 : 重复处理模块 208, 存在待生成下级表头的其他单元 格时, 判断单元格与其他单元格是否位于同一列或行中, 并在判断结果为是时, 确认已增加 了预定个数的行或列, 通知数据填充模块 204 直接进行数据的填充。通过该技术方案, 避免 了生成多余的行列, 影响表头数据的填充。
在上述技术方案中, 还包括 : 填充方式模块 210, 设置填充方式, 其中, 填充方式的 类型包括合并方式和两列方式, 在填充方式为合并方式时, 预定个数为数据的数量减去一, 在填充方式为两列方式时, 预定个数为数据的数量。 在上述技术方案中, 数据填充模块 204 在填充方式为合并方式时, 还将预定个数 的行或列中的与单元格位于同一列或行的单元格, 与单元格合并, 在填充方式为两列方式 时, 直接取得同时位于单元格的所在列或行的邻接列或行, 以及预定个数的行或列中的所 有单元格, 以用于填充数据。
图 3 是根据本发明的一个实施例的下级表头生成方法的流程图。
如图 3 所示, 本发明还提供一种下级表头生成方法, 包括 : 步骤 302, 在表格中, 根 据待填充进下级表头的数据的数量, 增加预定个数的行或列, 其中, 预定个数的行或列与待 生成下级表头的单元格的所在行或列相邻接 ; 步骤 304, 取得同时位于单元格的所在列或 行的邻接列或行, 以及单元格的所在行或列和预定个数的行或列中的所有单元格, 以用于 填充数据。通过该技术方案, 能够自动进行行列填充, 以进行下级表头的生成。
在上述技术方案中, 在步骤 304 之前, 还包括 : 存在待生成下级表头的其他单元格 时, 判断单元格的所在列或行与其他单元格的所在列或行是否邻接, 并在判断结果为是时, 在单元格的所在列与其他单元格的所在列或行之间, 增加一列或行。 通过该技术方案, 可以 避免生成的表头覆盖了其他表头。
在上述技术方案中, 在步骤 302 之前, 还包括 : 存在待生成下级表头的其他单元格 时, 判断单元格与其他单元格是否位于同一列或行中, 并在判断结果为是时, 确认已增加了 预定个数的行或列, 并直接进入步骤 304。 通过该技术方案, 避免了生成多余的行列, 影响表 头数据的填充。
在上述技术方案中, 在步骤 302 之前, 还包括 : 设置填充方式, 其中, 填充方式的类 型包括合并方式和两列方式, 在填充方式为合并方式时, 预定个数为数据的数量减去一, 在 填充方式为两列方式时, 预定个数为数据的数量。
在上述技术方案中, 在步骤 304 中, 在填充方式为合并方式时, 还将预定个数的行 或列中的与单元格位于同一列或行的单元格, 与单元格合并, 在填充方式为两列方式时, 直
接取得同时位于单元格的所在列或行的邻接列或行, 以及预定个数的行或列中的所有单元 格, 以用于填充数据。
以下对本发明的技术方案进行详细说明。
首先, 无论是针对行表头或是列表头, 本发明技术方案的核心部分都是互通的, 所 以下面在论述各种技术方案的时候, 仅以行表头生成下级表头信息为例, 有关列表头的方 法可以依此类推。
解决方案分为以下几种情况 :
1) 位于同一列的行表头单元格生成下级表头。
如图 4 所示, 图中显示的是表格设计中间过程的一个未完成的表格, 比如, 需要为 A 公司和 C 公司生成同样的下级费用项目时 ( 差旅费、 交通费、 办公费 ), 根据用户的使用习 惯, 一般可以按照合并方式或者两列方式进行下级表头的填充, 生成下级表头的具体步骤 包括 :
步骤 1) 在表格上选中需要生成下级表头的单元格 (A 公司, C 公司 )。
步骤 2) 选择具体的填充方式 ( 合并方式 / 两列方式 ), 录入需要填充的下级表头 数据 ( 差旅费、 交通费、 办公费 ), 并计算出下级数据的个数 N( = 3)。 步骤 3) 填充下级表头, 这是整个过程的核心步骤。
a) 将选中的行表头单元格按照从下到上的顺序排序 (C 公司、 A 公司 )。
b) 根据所选填充方式, 对排序后的单元格依次遍历, 进行填充操作。
取第一个单元格, 如果是合并方式, 首先在当前单元格所在行下添加 N-1 行, 然后 从当前单元格的右侧单元格开始, 将需要填充的下级表头信息按照从上到下的顺序依次录 入。
如果是两列方式, 首先在当前单元格所在行下添加 N 行, 然后从当前单元格的右 下侧单元格开始, 将需要填充的下级维度信息按照从上到下的顺序依次录入。
录入完成后, 取下一个单元格, 直到不存在未填充的单元格为止。
步骤 4) 如果是合并方式填充, 则需合并已填充完成的单元格, 依次将 C 公司、 A公 司单元格与同列的下面 N-1 个单元格合并。
根据以上方案, 按照合并方式, 填充后的表格可以如图 5 所示, 按照两列方式, 填 充后的表格可以如图 6 所示。
从以上步骤中可以看出, 为表格生成下级表头时, 利用的 Excel 的核心操作是增 行和对单元格的合并, 而在当前情况下, 因为如图 4 所示, 已经假定了所有需要填充的父级 单元格是位于同一列的单元格, 所以这既不会涉及到重复增行, 又不会涉及到两个单元格 填充后的覆盖问题, 所以说, 这种情况下的下级表头填充时最简单的。
2) 离散的行表头单元格生成下级表头。
在如图 7 所示的表格中, 现在需要对 A2、 B2、 D3、 A4 四个单元格对应的公司生成下 级表头信息, 如果按照前述步骤进行下级表头的生成和填充, 填充结果存在两个问题 :
1) 重复增行 :
由于 A2、 B2 同时处于第 2 行, 则当按照排序顺序进行合并方式操作时, A2 和 B2 的 下级填充都分别增加了 2 行, 这样, 相当于总共增加了 4 行, 而实际上只要增加两行就可以 满足本来的填充要求。
2) 内容覆盖 :
A2, B2 作为同一行上的相邻单元格, 填充顺序为 B2、 A2, 当 B2 填充完成, A2 单元格 执行填充时, 会将原 B2 所在单元格的内容给覆盖掉。
对于上述问题 1), 本发明技术方案的解决方法为, 在填充过程中添加一个公共参 数 param, 整型的动态数组类型, 来保存已经进行过填充下级操作的单元格所在行。 当然, 保 存前需要过滤掉重复行。这样, 在某个单元格增行操作前, 首先根据 param 参数判断所在行 是否已经有其他的单元格进行过下级表头填充, 如果没有, 则需要首先增行, 再进行下级表 头填充, 否则, 就无需再次增行, 直接进行下级表头填充。
比如, 按照 A4, D3, B2, A2 的顺序进行下级表头填充时, 单元格 A4 在填充过程中首 先判断出 param 中并为包含当前行号 4, 所以进行增行操作, 且将所在行号保存在 param 中, 然后填充下级表头数据, 具体实现可以如下 :
依此类推, 则在 A4, D3, B2 单元格均完成后, param 中已记录着行号 {4, 3, 2}, 这样 在 A2 进行填充操作时, 会发现所在行已经保存在 param 中, 则 A2 不需要再次增行, 可以直 接进行下级表头数据填写。
对于问题 2), 本发明技术方案的解决方法为, 在核心操作开始前, 需要进行如下增 列检查操作 :
a) 遍历所有的单元格, 检查是否有同行上相邻单元格的情况。 如果没有, 则直接返 回; 如果有, 如 A2, B2, 则记录相邻单元格中列号比较大的单元格所在列数 (B2 所在列号= 2), 如果当前列号已经记录过, 则忽略不计。
b) 将记录的所有列号的数组按照从大到小的顺序排序。
c) 遍历列号数组, 进行增列操作, 同时修改列号大于等于当前列的所有父级单元 格的信息。如在 B2 左侧增行, 同时将 B2 单元格的信息修改为 C2, 将 D3 单元格的信息修改 为 E3。
通过以上步骤, 在相邻单元格中间增加了一列后, 就可以避免左侧单元格的数据 填充覆盖掉右侧单元格的而信息了。
结合对上述两问题的解决方法, 下面以合并方式为例, 将具体操作步骤修改如 下:
步骤 1) 在表格上选中需要生成下级表头的单元格 (A 公司、 B 公司、 D 公司、 E公司 )。 步骤 2) 选择具体的填充方式 ( 合并方式 / 两列方式 ), 录入需要填充的下级表头 数据 ( 差旅费、 交通费、 办公费 ), 并计算出下级数据的个数 N( = 3)。
步骤 3) 增列检查操作, 具体见上述问题 2) 的解决方案。
步骤 4) 填充下级表头信息。
a) 将选中的行表头单元格按照从下到上、 从右到左的顺序排序 (E 公司、 D 公司、 B 公司、 A 公司 )。
b) 依次遍历, 进行填充操作。
取当前单元格。
根据参数 param 判断单元格所属行是否已经进行过下级表头填充。
如果没有, 则在当前单元格所在行下增行, 合并方式增 N-1 行, 两列方式增 N 行, 并 将当前单元格所在行记录在 param 中。
从当前单元格的右侧单元格开始, 将需要填充的下级表头信息按照从上到下的顺 序依次录入。
录入完成后, 取下一个单元格, 直到不存在未填充的单元格为止。
步骤 5) 如果是合并方式填充, 则需合并已填充完成的单元格, 依次将 B 公司、 A公 司单元格与同列的下面 N-1 个单元格合并。
按照上述步骤, 填充完成后的表格如图 8 所示。
综合以上内容, 可将本发明技术方案中提出的下级表头生成方法的步骤总结如 下:
如图 9 所示, 步骤 902, 选中需要填充下级表头的父级单元格 ;
步骤 904, 设置填充方式和下级表头数量 N ;
步骤 906, 判断是否存在同行相邻的单元格, 判断结果为是, 则进入步骤 908, 判断 结果为否, 则直接进入步骤 912 ;
步骤 908, 保存非重复的相邻单元格较大列号, 按大小排序 ;
步骤 910, 遍历列号数组, 增列, 同时修改所有右侧父级单元格信息 ;
步骤 912, 对父级单元格按照从下到上, 从右到左的顺序排序 ;
步骤 914, 定位到第一个单元格 D1 ;
步骤 916, 判断 param 中是否包含当前行号, 判断结果为否, 则进入步骤 918, 判断 结果为是, 则进入步骤 924 ;
步骤 918, 判断是否使用了合并方式, 判断结果为是, 则进入步骤 920, 判断结果为 否, 则进入步骤 922 ;
步骤 920, 在当前行下增 N-1 行, param 中保存当前行号 ;
步骤 922, 在当前行下增 N 行, param 中保存当前行号 ;
步骤 924, 判断是否使用了合并方式, 判断结果为是, 则进入步骤 926, 判断结果为 否, 则进入步骤 928 ;
步骤 926, 从 D1 右侧从上到下依次填充下级表头信息 ;
步骤 928, 从 D1 的右下侧从上倒下依次填充下级表头信息 ;
步骤 930, 合并父级单元格, 将父级单元格与下面的 N-1 个单元格合并 ;
步骤 932, 判断所有单元格已经遍历完毕, 判断结果为否则取下一个单元格继续进 行处理, 判断结果为是, 则流程结束。
根据以上技术方案, 可以实现一种下级表头生成装置和一种下级表头生成方法, 基于 Excel 表格, 可以在企业信息系统实施过程中发挥重要作用, 使得多表头表单的格式 设计过程在很大程度得以简化, 降低了实施人员和企业会计人员建表的复杂度, 在一定程 度了减轻了工作人员的工作负担, 有利于企业信息系统的传播和推广。 同时, 本发明的技术 方案具有适用性, 不仅可以应用在企业信息系统中, 同时, 也为进一步集成到其他的建表工 具包括 Excel 上, 提供了可行的解决方案。
以上所述仅为本发明的优选实施例而已, 并不用于限制本发明, 对于本领域的技 术人员来说, 本发明可以有各种更改和变化。 凡在本发明的精神和原则之内, 所作的任何修 改、 等同替换、 改进等, 均应包含在本发明的保护范围之内。