一种电子表格通用数据解析导入方法

文档序号:6597101阅读:615来源:国知局
专利名称:一种电子表格通用数据解析导入方法
技术领域
本发明涉及在电子表格中内建解析导入模型,通过建立在模型之上的通用逻辑实现电子表 格数据的解析和导入。
背景技术
电子表格是目前最常用的办公软件,主要应用在申请、上报报表等业务场景中,最常见的 展现形式就是申请表、报表。
电子表格作为承载数据的载体最大的优点就是结构化,通过行列序号这种定位方式可以准 确访问数据,有效性校验、内置的编程扩展使它能较真实的模拟应用界面及界面逻辑,强大的 统计、分析功能也是办公人员偏爱电子表格的主要原因。
目前,政府行业许可业务的申请表、报表大都以电子表格的形式来提供模板(其他文档形 式的模板可以转化为电子表格形式),出于节省录入工作量的考虑,也为了避免人为出错,用 户往往要求在业务中可以导入行政相对人提供的申报数据,实现申报数据的导入,这种申报数 据通常就是以电子表格作为载体。
电子表格数据导入按目标不同可分为两种, 一种是将电子表格中的数据根据映射关系导入 到数据库对应的表中,另一种是将电子表格中的数据填写到应用系统的界面输入域中。
要实现电子表格中申报数据的导入,按常规的实现思路,要将申请表模板化,然后建立模 板中数据项与数据库表列(或应用系统界面输入域)的对应关系,依据对应关系,解析申请表 中的数据,写入数据库或回填到页面。
模板中数据项与数据库表列(或应用系统界面输入域)的对应关系通常都是放置在应用系 统端,要么固化在导入逻辑中,要么在系统中做成可配置的对应表。第1种方式重用性最差, 工作量大;第2种方式虽较第1种方式有了较大改善,但可维护性性不好, 一旦模板发生变更, 应用系统中对应关系要重新配置。
借鉴第2种实现方式的思路,我们换一个角度,把数据项与数据库表列(或应用系统界面 输入域)的映射关系内建在电子表格模板中,赋予模板自解释的特性,然后导入逻辑就可以做 成通用的,如果模板发生变更,只需在变更的同时调整模板中的内建模型就可以完成映射关系 的更新。

发明内容
本发明所要解决的技术问题是提供一种电子表格数据通用解析导入方法,用一种通用方法 解决以电子表格为载体的申请书、报告等申报材料的数据解析和导入,通过抽象出电子表格数 据解析导入模型并内建于电子表格模板文件,实现解析导入逻辑的通用性,利用模型化的思路,实现电子表格数据的自解释,提高解析导入逻辑的可重用性、可维护性,减少解析导入逻辑硬 编码时的重复编码工作量。
本发明的方法包括(一)电子表格数据解析导入模型;(二)数据定位方式;(三)主 外键的表示方式;(四)多行表有效记录的判断规则;(五)枚举值的处理;(六)模型的安 全性;其中
(一) 电子表格数据解析导入模型,是根据数据导入的要求,将电子表格中的内容映射为数据 库中表和列,解析导入模型的核心内容由表模型、列模型和枚举值模型组成,枚举值模型处理 键值映射;
(二) 数据定位方式 电子表格中的数据定位按三级方式工作簿->工作表->区域;
区域是个单元格,或是一组在二维上连续的单元格,在后一种情况中再进一步定位到其 中某个单元格,还要通过行列序号进一步定位,对区域的引用有两种方式
(1) 地址采用行列序号,方式包括Al, $B$4、 A1:B4;
(2) 命名区域为指定区域命名,引用时使用该名称引用; 解析导入模型的定位,包括定位解析模型的位置和在解析导入模型中要解析区域定位;其

1)解析导入模型定位是采用命名区域的方式来引用,遵循如下规则
(1) 解析模型的核心内容包括表模型和列模型,采用一个单独的工作表来存放,该工作表
统一命名为"ShtDataConf";
(2) 表模型的数据区域统一指定为命名区域,名称为"DataConfTable";
(3) 表模型中每个表对应的列模型统一使用命名区域来指定或自行命名,并将该名称设置 为对应表模型中"列模型引用"列的值;将所有的列模型上下并排放在一起;
(4) 解析导入模型的枚举值模型采用一个单独的工作表来存放,该工作表统一命名为 "ShtEnumerate",各个枚举值的键值对集合统一存放在2列多行的命名区域中,名称自行指
定;
2)解析区域定位通过电子表格中要解析的区域使用列模型的"源工作表名"、"源区 域名"、"源区域列序号"来组合定位,是单行表,要解析的数据仅用"源工作表名"、"源 区域名"定位;
(三)主外键的表示方式
(1)规则
1) 主从表的关系通过表模型中"主表名"元素来指定;
2) 在表模型中主表一定要排在从表前面,也就是说要保证主表的模型先予解析;
3) 表的主键通过对应列模型中的"是否主键"来指定;
4) 表的外键通过对应列模型屮的"是否外键"来指定;5) 主键可以在单元格中明确赋值,也可以自动生成,自动生成时,该列在模型中"列数据 类型"元素值为"键值.n,,,并且"源工作表名"、"源区域名"、"源区域列序号"元素的 值被忽略;
6) 外键可以在单元格中明确赋值,也可以使用对应主表的主键值,建议应优先使用对应主 表的主键值。当外键在列模型未指定准确的解析区域时,将使用对应主表的主键值;
7) 主键是组合主键时,主键在列模型中列的相对顺序与外键中对应列的相对顺序必须保持 一致;
(2) 主表为多行表时的主外键对应
列模型中有两个元素,"是否虚拟主键"、"是否虚拟外键",多行表中"是否虚拟主键" 为"是"的列与其从表中"是否虚拟外键"为"是"的列值存在引用关系,从表中"是否虚拟 外键"为"是"的列的值在主表"是否虚拟主键"为"是"的对应列中必须能找到;
(3) 虚拟主键是组合主键时,虚拟主键在列模型中列的相对顺序与虚拟外键中对应列的相 对顺序必须保持一致;
(四) 多行表有效记录的判断规则
"行类型"为"多行表"的表,解析模型默认其列模型中"源区域列序号"为"1"的列 为标志列,解析明细行数据时,第1次遇到该列值为空时即认为有效记录已读完,停止解析该 多行表;
(五) 枚举值的处理
电子表格提供类似应用程序界面的下拉列表功能,通过指定区域的数据有效性和一个序列 来实现下拉列表;
将枚举值放在一个两列的区域中,第1列存放实际存储的值,第2列存放存放界面显示文 本,然后将其中的第2列作为序列提供给指定区域的数据有效性功能,解析时再通过反査枚举 值对序列得出实际的枚举值;
枚举值区域为了便于识别,规定以"ENUM—"作为前缀来命名;
电子表格中所有的枚举值对序列集中存放在一个工作表中,该工作表统一命名为 "shtEnumerate,,;
(六) 模型的安全性
模型的维护应由模板文件提供方负责,采用电子表格实现自身的保护,或将模型位于的两
个Sheet隐藏或设置密码予以保护。 本发明的有益效果有以下优点 电子表格数据解析导入模型内建在电子表格文档中,使电子表格数据具有自解释的特性,相对 于无模型的硬编码导入逻辑,减少了重复编码工作量,相对于模型与数据分离的导
(1) 入机制,避免了额外的映射和逻辑处理,保证解析导入逻辑的简洁、通用。
(2) 电子表格数据解析导入模型支持主从表模式的数据处理,解决了在电子表格中如何建立表间关联的问题,成为真正符合业务应用实际的模型。依据模型解析后的数据既可直接生 成模拟业务实际的SQL语句,又可填写到指定的界面输入域。
(3) 电子表格数据解析导入模型中枚举值的处理方式进一步解决了业务应用中的现实问 题,增加了模型的可用性。 ,
具体实施例方式
本发明的方法由以下几部分内容组成
(一) 电子表格数据解析导入模型;
(二) 数据定位方式;
(三) 主外键的表示方式;
(四) 多行表有效记录的判断规则
(五) 枚举值的处理;
(六) 模型的安全性; 以下分别说明。
(一)电子表格数据解析导入模型
根据数据导入的要求,电子表格中的内容最终映射为数据库中表和列,因此,解析模型的 核心内容也由两部分组成表模型、列模型,除此之外,解析模型提供一个枚举值模型来处理 键值映射。
1.表模型
序号模型元素说明
1流水号相当于数据表的序号,无实际意义。
2数据库表名标识数据库表的名称。
3行类型数据表的行类型,取值为 1. 单行表即该表在当前电子表格文件中仅会出现0或1条记录; 2. 多行表即该表在当前电子表格文件中会出现O、 l或多条记录;
4列模型引用该数据库表对应列模型定义的引用。
5主表名如果该数据库表为表模型中某表的从表,此元素的值为对应的主表名称。
2.列模型
序号中文名称. 说明
1流水号相当于数据表列的序号,无实际意义。
2数据库列名标识数据库表列的名称。
3表列序号标识数据库表列的在表中的序号(保留作为扩充)
4界面tab名标识应用系统界面上的tab名(用来与"界面输入域名"组合成可以 唯一定位应用系统界面输入域的名称)
5界面输入域名标识应用系统界面上的输入域名。
6是否主键该列是否为主键(或其组成部分)。 取值为是,否。
是否外键该列是否为外键(或其组成部分)。 取值为是,否。
8是否虚拟主键该列是否为虚拟主键(或其组成部分)。取值为是,否。
7此键是为解决明多行表与其从表之间引用对应关系的标识问题。 如果从表的虚拟外键与其主表(多行表)的某行的虚拟主键值相同, 则记录之间存在主从关系。
9是否引用明细键该列是否为虚拟外键(或其组成部分)。取值为是,否。 此键是为解决明多行表与其从表之间引用对应关系的标识问题。 如果从表的虚拟外键与其主表(多行表)的某行的虚拟主键值相同, 则记录之间存在主从关系。
10列数据类型该数据表列的数据类型,数据类型有 1. 文本; 2. 日期; 3. 整型; 4. 枚举; 5. 键值.n (16进制随机码,n为码长); 6. 常量; 列数据类型可以根据实际需耍予以扩充。
11是否可空取值为是,否。
12源工作表名该列对应值所在工作表名。 如果对应表模型的"行类型"为"单行表",根据"源工作表名"和 "源区域名"即可定位该列对应的值。 如果对应表模型的"行类型"为"多行表",根据"源工作表名"、 "源区域名"、"源K域列序号"循环读取该列对应的值。
13源区域名该列对应值在"源工作表名"中的"源区域"名。
14源区域列序号该列对应值在"源工作表名"中"源区域"里面的列序号。
15枚举值如果当前列数据类型为"枚举",存放枚举值对(保留作为扩充)
16导入类型该列导入时的处理方式,取值为 1. 数据库(导入数据至数据库) 2. 界面(回填数据至界面) 3. 全部(导入数据至数据库,同时回填数据至界面)
3.枚举值模型
序号. 模型元素^ 说明',
1键枚举值中实际写入数据库的部分
2值枚举值中用于界面显示的部分
(二)数据定位方式
电子表格中的数据定位按三级方式工作簿->工作表->区域。
区域可能是个单元格,也可能是一组在二维上连续的单元格,如果在后一种情况中再进一
步定位到其中某个单元格,还要通过行列序号进一步定位。 对区域的引用有两种方式
1. 地址
采用行列序号这种方式,例如Al, $B$4、 A1:B4。
2. 命名区域
为指定区域命名,引用时使用该名称引用,例如为A1:B4命名为"thisarea",引用时即可以采取使用"thisarea"。命名区域具有一定的灵活性。
解析模型同样也涉及到定位, 一是如何定位解析模型的位置, 一是在解析模型中如何定位 要解析的区域。
1. 解析模型定位
解析模型的位置采用命名区域的方式来引用,遵循如下规则
1) 解析模型的核心内容(表模型、列模型)采用一个单独的工作表来存放,该工作表统 一命名为"ShtDataConf";
2) 表模型的数据区域(不含标题行)统一指定为命名区域,名称为"DataConfTable";
3) 表模型中每个表对应的列模型(不含标题行)统一使用命名区域来指定(自行命名), 并将该名称设置为对应表模型中"列模型引用"列的值; 一般会将所有的列模型上下并排放在 一起。
4) 解析模型的枚举值模型采用一个单独的工作表来存放,该工作表统命名为 "ShtEnumerate",各个枚举值的键值对集合统一存放在2列多行的命名区域中,名称自行指
定; _
2. 解析区域定位
电子表格中要解析的区域使用列模型的"源工作表名"、"源区域名"、"源区域列序号" 来组合定位,如果是单行表,要解析的数据仅用"源工作表名"、"源区域名"即可定位。 (三)主外键的表示方式
1. 规则
1) 主从表的关系通过表模型中"主表名"元素来指定。
2) 在表模型中主表一定要排在从表前面,也就是说要保证主表的模型先予解析。
3) 表的主键通过对应列模型中的"是否主键"来指定。
4) 表的外键通过对应列模型中的"是否外键"来指定。
5) 主键可以在单元格中明确赋值,也可以自动生成(也就是说该列在电子表格中可以不存 在),自动生成时,该列在模型中"列数据类型"元素值为"键值.n",并且"源工作表名"、
"源区域名"、"源区域列序号"元素的值被忽略。
6) 外键可以在单元格中明确赋值,也可以使用对应主表的主键值,建议应优先使用对应主 表的主键值。当外键在列模型未指定准确的解析区域时,将使用对应主表的主键值。
7) 主键是组合主键时,主键在列模型中列的相对顺序与外键中对应《i」的相对顺序必须保持 一致。 ,
2. 主表为多行表时的主外键对应
当从表中的外键自动引用主表中的主键值时,主表的"行类型"如果是"单行表"比较容 易处理,因为只有一个主键值,但主表的"行类型"是"多行表",因为存在多个主键值,处
9理起来就相对复杂。
列模型中有两个元素,"是否虚拟主键"、"是否虚拟外键",多行表中"是否虚拟主键" 为"是"的列(称为虚拟主键)与其从表中"是否虚拟外键"为"是"的列(称为虚拟外键) 值应存在引用关系,也就是说,从表中"是否虚拟外键"为"是"的列的值在主表"是否虚拟 主键"为"是"的对应列中必须能找到。
采取上述这种方式处理是因为在电子表格中主表是多行时较难表现从表与其之间的主外键 对应关系,尤其是主表的主键是自动生成的情况。这时候,就取主表中能唯一标识当前行的列 (或列组)作为虚拟主键,对应列模型的"是否虚拟主键"元素值设为"是",如果主表虚拟 主键列在从表中缺少对应列,则予以添加,作为虚拟外键列,并且虚拟外键在列模型中"是否 虚拟外键"元素值设为"是"。
虚拟主键是组合主键时,虛拟主键在列模型中列的相对顺序与虚拟外键中对应列的相对顺 序必须保持一致。
(四) 多行表有效记录的判断规则
在电子表格中建立申请表模板时,针对不确定会填写多少行的内容,往往会预留多行(一 般是能预见的最大行数),但在实际填写时往往不会填写这么多行,这样就需要确定明细行到 哪一行结束。
"行类型"为"多行表"的表,解析模型默认其列模型中"源区域列序号"为'T'的列为 标志列,解析明细行数据时,第1次遇到该列值为空时即认为有效记录已读完,停止解析该多 行表。
(五) 枚举值的处理
电子表格可以提供类似应用程序界面的下拉列表功能,是通过指定区域的数据有效性来实 现的,这时是通过提供一个序列来实现下拉列表。
应用程序中下拉列表显示的内容和实际存储的内容往往不相同,是采用枚举值的方式来处 理的。而电子表格中无法实现选中值和存储值不同, 一般是变通实现。
将枚举值放在一个两列的区域中,第1列存放实际存储的值,第2列存放存放界面显示文 本,然后将其中的第2列作为序列提供给指定区域的数据有效性功能,解析时再通过反査枚举 值对序列得出实际的枚举值。
枚举值区域为了便于识别,规定以"ENUM—"作为前缀来命名。
电子表格中中所有的枚举值对序列集中存放在一个工作表中,便于维护和管理。该工作表 统一命名为"shtEnumerate";
(六) 模型的安全性
模型的维护应由模板文件提供方负责,不应该将模型直接暴露给填报者,这会导致模型被 填报者误编辑,导致模型出错,无法实现电子表格数据的正确解析。
针对这个问IL采用电子表格自身的保护功能来实现,将模型位于的两个Sheet隐藏或予 以保护(通过密码校验不允许未制授权用户直接编辑)。
权利要求
1. 一种电子表格通用数据解析导入方法,其特征在于,用一种通用方法解决以电子表格为载体的申请书、报告的数据解析和导入,通过抽象出电子表格数据解析导入模型并内建于电子表格模板文件,实现解析导入逻辑的通用性,方法包括(一)电子表格数据解析导入模型;(二)数据定位方式;(三)主外键的表示方式;(四)多行表有效记录的判断规则;(五)枚举值的处理;(六)模型的安全性。
2、 根据权利要求1所述的方法,其特征在于,电子表格数据解析导入模型,是根据数据导 入的要求,将电子表格中的内容映射为数据库中表和列,解析导入模型的核心内容由表模型、 列模型和枚举值模型组成,枚举值模型处理键值映射。
3、 根据权利要求1所述的方法,其特征在于,数据定位方式如下-电子表格中的数据定位按三级方式工作簿-〉工作表-〉区域;区域是个单元格,或是一组在二维上连续的单元格,在后一种情况中再进一步定位到其 中某个单元格,还要通过行列序号进一步定位,对区域的引用有两种方式(1) 地址采用行列序号,方式包括Al, $B$4、 A1:B4;(2) 命名区域为指定区域命名,引用时使用该名称引用; 解析导入模型的定位,包括定位解析模型的位置和在解析导入模型中要解析区域定位;其中1)解析导入模型定位是采用命名区域的方式来引用,遵循如下规则(1) 解析模型的核心内容包括表模型和列模型,采用一个单独的工作表来存放,该工作表统一命名为"ShtDataConf";(2) 表模型的数据区域统一指定为命名区域,名称为"DataConfTable";(3) 表模型中每个表对应的列模型统一使用命名区域来指定或自行命名,并将该名称设置 为对应表模型中"列模型引用"列的值;将所有的列模型上下并排放在一起;(4) 解析导入模型的枚举值模型采用一个单独的工作表来存放,该工作表统一命名为 "ShtEnumerate",各个枚举值的键值对集合统一存放在2列多行的命名区域中,名称自行指定; '2)解析区域定位通过电子表格中要解析的区域使用列模型的"源工作表名"、"源区 域名"、"源区域列序号"来组合定位,是单行表,要解析的数据仅用"源工作表名"、"源 区域名"定位;
4、 根据权利要求1所述的方法,其特征在于,主外键的表示方式如下 (1)规则1) 主从表的关系通过表模型中"主表名"元素来指定;2) 在表模型中主表一定要排在从表前面,也就是说要保证主表的模型先予解析;3) 表的主键通过对应列模型中的"是否主键"来指定;4) 表的外键通过对应列模型中的"是否外键"来指定; .5) 主键可以在单元格中明确赋值,也可以自动生成,自动生成时,该列在模型中"列数据 类型"元素值为"键值.n",并且"源工作表名"、"源区域名"、"源区域列序号"元素的 值被忽略;6) 外键可以在单元格中明确赋值,也可以使用对应主表的主键值,建议应优先使用对应主 表的主键值。当外键在列模型未指定准确的解析区域时,将使用对应主表的主键值;7) 主键是组合主键时,主键在列模型中列的相对顺序与外键中对应列的相对顺序必须保持 一致;(2) 主表为多行表时的主外键对应列模型中有两个元素,"是否虚拟主键"、"是否虚拟外键",多行表中"是否虚拟主键" 为"是"的列与其从表中"是否虚拟外键"为"是"的列值存在引用关系,从表中"是否虚拟 外键"为"是"的列的值在主表"是否虚拟主键"为"是"的对应列中必须能找到;(3) 虚拟主键是组合主键时,虚拟主键在列模型中列的相对顺序与虚拟外键中对应列的相 对顺序必须保持一致;
5、 根据权利要求1所述的方法,其特征在于,多行表有效记录的判断规则如下 "行类型"为"多行表"的表,解析模型默认其列模型中"源区域列序号"为"1"的列为标志列,解析明细行数据时,第1次遇到该列值为空时即认为有效记录己读完,停止解析该多 行表;
6、 根据权利要求1所述的方法,其特征在于,枚举值的处理方法如下电子表格提供类似应用程序界面的下拉列表功能,通过指定区域的数据有效性和一个序列 来实现下拉列表;将枚举值放在一个两列的区域中,第l列存放实际存储的值,第2列存放存放界面显示文 本,然后将其中的第2列作为序列提供给指定区域的数据有效性功能,解析时再通过反査枚举 值对序列得出实际的枚举值;枚举值区域为了便于识别,规定以"ENUM—"作为前缀来命名;电子表格中所有的枚举值对序列集中存放在一个工作表中,该工作表统一命名为 "shtEnumerate,,;
7、 根据权利要求1所述的方法,其特征在于,模型的安全性措施如下模型的维护应由模板文件提供方负责,采用电子表格实现自身的保护,或将模型位于的两个Sheet隐藏或设置密码予以保护。
全文摘要
电子表格通用数据解析导入方法发明,旨在用一种通用方法解决以电子表格为载体的申请书、报告等申报材料的数据解析和导入,通过抽象出电子表格数据解析导入模型并内建于电子表格模板文件,实现解析导入逻辑的通用性。本发明包括(1)数据解析导入模型;(2)数据定位方式;(3)主外键的表示方式;(4)多行表有效记录的判断规则;(5)枚举值的处理;(6)模型的安全性。采用该方法可以实现电子表格数据的自解释,提高解析导入逻辑的可重用性、可维护性,减少解析导入逻辑硬编码时的重复编码工作量。
文档编号G06F17/21GK101452441SQ20081023775
公开日2009年6月10日 申请日期2008年12月5日 优先权日2008年12月5日
发明者董玉全 申请人:山东浪潮齐鲁软件产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1