一种电子数据表的计算方法和装置的制作方法

文档序号:6609252阅读:200来源:国知局
专利名称:一种电子数据表的计算方法和装置的制作方法
技术领域
本发明涉及计算机数据处理领域,特别是涉及一种电子数据表的计算的方法和装置。
背景技术
电子数据表(Spreadsheet)是以表格形式来组织数据及信息的计算工具软件,譬如Microsoft Excel,Lotus1-2-3,Borland Quattro Pro,LinuxGnumeric,WPS表格,永中Office等等。
单元格为电子数据表的最基本组成单元,其中可以包含计算公式,用以计算此单元格的数值。电子数据表还可以预先设定或由二次开发者提供一些功能函数,这些函数可用于单元公式中,以方便用户使用。
譬如SUM(number1,number2,…)函数,一般用于数据合计;AVERAGE(number1,number2,…)函数一般用于返回参数的平均值(算术平均值)。其中参数(number1,number2,…)可以是数字,或者是包含数字的名称、数组或引用,也就是说上述的参数可以为数字数组,也可以为本数据表中的单元格或者其他数据表中的单元格。
电子数据表还可以预先设定更为复杂的函数,例如在Microsoft Excel中的DDB(cost,salvage,life,period,factor)函数,一般用于使用双倍余额递减法或其他指定方法,计算一笔资产在给定期间内的折旧值。其中的参数,Cost为资产原值;Salvage为资产在折旧期末的价值(也称为资产残值);Life为折旧期限(有时也称作资产的使用寿命);Period为需要计算折旧值的期间,Period必须使用与life相同的单位;Factor为余额递减速率,如果factor被省略,则假设为2(双倍余额递减法)。
而二次开发者提供的功能函数一般更为复杂,譬如ERP电子数据表系统中的ACCT函数用于从其它信息系统中提取财务数据。
总之,电子数据表中单元格能够使用的公式或者函数非常多,但是传统的电子表格程序如Microsoft Excel是利用单个计算链处理电子表格中公式的计算和重算,该计算链在本质上是被输入到Excel当前载入的所有工作表中的全部公式的有序列表。即现有技术中的电子数据表统筹安排其中各单元格的单元公式的计算顺序,以解释或编译执行的方式顺次执行计算单元公式,位于各个单元公式中的函数也被顺次调用,从而依次完成整张电子数据表的数据处理。
为了提高运算效率,第200510089360号中国专利公开了一种处理电子表格程序中的支持和依赖公式的方法,包括确定多个可用处理器;如果可用处理器的数目至少是两个,则给每个可用处理器分配一重算引擎;在所述重算引擎之间分发公式;以及对分配给每个重算引擎的公式求值。该方案的核心在于通过在电子表格程序中使用多个处理器进行链式计算的并行处理方法,以提高效率,所述每个处理器都具有单独的重算引擎。
但是在实际应用中,发现上述各种处理过程在复杂的财务数据处理过程中,都存在以下的技术问题都需要对整张电子数据表中的同一函数进行重复调用,而同一函数的分散重复调用不利于此函数的优化执行,致使效率低下。
例如,需要执行计算的电子数据表中,包括M个函数A,函数A需要调用其他数据表中的数据或者其他信息系统的数据完成计算。则现有技术将该电子数据表中的所有公式统筹安排排序后顺次执行,上述M个函数A分散存在于得到的公式序列中。因此,在现有技术的执行过程中,函数A就独立的、重复执行了M次,而每次执行函数A都需要独立的从其他数据表中查询、匹配获取相应数据,然后完成计算,无法实现对函数A的优化执行,浪费系统计算资源,计算速率较低。

发明内容
本发明所要解决的技术问题是提供一种电子数据表函数批量计算的方法和装置,可以大大提高电子数据表的整体计算速度。
为了解决上述问题,本发明公开了一种电子数据表的计算方法,包括以下步骤扫描电子数据表中的单元格公式,从中收集符合预置条件的函数及其参数;将所述函数及其参数批量提交给至少一个函数执行引擎;函数执行引擎针对批量接收的函数及其参数进行执行。
优选的,当所述函数为查询其他数据库或者数据表以获取相应数据时,则所述执行包括以所述参数的数据集合作为执行参数,查询相应的数据库或者数据表,完成函数执行。
其中,所述符合预置条件的函数为所述电子数据表中的全部函数或者某些特定函数。所述批量提交可以为一次提交,也可以为分批提交。
优选的,所述的方法还可以包括所述函数执行引擎批量返回所述函数的执行结果;根据所述批量结果,完成整张所述电子数据表的计算。
本发明还公开了一种电子数据表的计算装置,包括以下部件函数收集单元,用于扫描电子数据表中的单元格公式,从中收集符合预置条件的函数及其参数;批量提交单元,用于将所述函数及其参数批量提交给至少一个函数执行引擎;函数执行引擎,用于针对批量接收的函数及其参数进行执行。
优选的,当所述函数为查询其他数据库或者数据表以获取相应数据时,则所述执行包括以所述参数的数据集合作为执行参数,查询相应的数据库或者数据表,完成函数执行。
其中,所述符合预置条件的函数为所述电子数据表中的全部函数或者某些特定函数;所述批量提交可以为一次提交,也可以为分批提交。
优选的,所述函数执行引擎位于所述电子数据表中,所述函数收集单元、批量提交单元位于外部辅助模块中。
进一步,所述函数收集单元、批量提交单元以及函数执行引擎也可以都位于外部辅助模块中;或者,所述函数收集单元、批量提交单元以及函数执行引擎都位于所述电子数据表中。
与现有技术相比,本发明具有以下优点本发明提出了一种电子数据表的计算的方法和装置,尤其适用于所述函数需要调用其他数据库或者数据表获取数据的情况,本发明首先从需要处理的电子数据表中的所有函数中收集能够应用本发明进行批量计算的函数,然后将电子数据表内所有该函数的参数一次收集完毕,然后针对该函数进行优化执行得到批量结果(例如,以所有参数的数据集合作为新参数完成函数运算),在后续的单元格计算中无需再次独立执行该函数,从而可以大大节约系统资源,提高计算速度。在实际应用中,虽然每次收集参数及以参数集合进行函数执行的过程要比现有的每个函数单独执行的过程要费时,但是从整体而言,尤其在电子数据表中函数重复度较高的情况下,可以使整个电子数据表的整体计算速度提升大约10倍左右。


图1是一种电子数据表的计算方法的步骤流程图;图2是一种电子数据表的计算装置的结构框图。
具体实施例方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本发明作进一步详细的说明。
本发明的核心在于首先扫描电子数据表中需计算的所有单元公式,提取并记录其中的全部或指定的函数及其参数,然后将函数记录一次或分批提交给位于电子数据表中或外部辅助模块中的函数执行引擎,函数执行引擎对于批量提交的函数及其参数可以优化执行,从而提高电子数据表的整体计算速度。尤其对于需要调用数据库或者数据表以完成执行的函数而言,批量执行中的优化效果更为明显。
本发明可用于众多通用或专用的计算系统环境或配置中。例如个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本发明所述的电子数据表的计算方法可以用于计算整张电子数据表的计算,也可以用于完成对其部分区域的计算。
参照图1,示出了一种电子数据表的计算方法的步骤流程图,包括以下步骤步骤101、扫描电子数据表中的单元格公式,从中收集符合预置条件的函数及其参数。
所述函数可以为实际应用中的任一函数,但是最佳的情况,所述函数需要调用外部数据源以完成函数执行,例如,所述函数需要调用外部数据库或者数据表以完成函数执行,或者所述函数需要调用互联网信息以完成函数执行等等。
本发明所述的函数批量计算可以由用户的人工请求触发,或者,由来自调用例程的请求自动地触发。所述扫描可以扫描该电子数据表中的所有单元格公式,当然对于存在限制条件的情况下,扫描该电子数据表中一部分的单元格公式也是可行的,本发明对此并不需要加以限定。
所述单元格公式可以仅仅包括一个本发明所述的符合预置条件的函数,也可以由多个函数组成,其中包括本发明所述的符合预置条件的函数。
步骤101中所述的收集符合预置条件的函数及其参数的过程可以采用直接字符串匹配的方法收集函数及其参数,也可以采用边解析边收集的方法,以满足单元格公式中的嵌套函数的需要。函数嵌套是指一个函数的参数为另一个函数的返回值,需要首先将内部的函数调用完成后才能继续外部函数的调用。
步骤102、将所述函数及其参数批量提交给至少一个函数执行引擎。
本发明所述的符合预置条件的函数可以为所述电子数据表中的全部函数,即批量收集所有的函数,将其中能够应用本发明的函数批量提交给至少一个函数执行引擎。
所述批量接收函数的执行引擎可以为一个或者多个,本领域技术人员根据需要执行的函数确定即可。例如,所述收集的电子数据表中的函数中可以分为不同的几类函数,则可以分别提交给不同的函数执行引擎分别完成函数的批量优化执行,执行完成后,统一返回执行结果即可。
所述批量提交可以为一次提交,也可以为分批提交。例如,对于批量较大,函数执行引擎无法一批处理的情况就可以分批提交给函数执行引擎进行多批处理。
本发明所述的符合预置条件的函数也可以为某些特定函数,事先通过函数名称确定需要收集哪些函数即可。例如,对于电子数据表中的纯数值计算函数而言,应用本发明的技术效果并不明显,所以在批量收集的过程中可以忽略这些纯数值计算函数。
步骤103、函数执行引擎针对批量接收的函数及其参数进行优化执行。
其中的优化执行所采用的方案根据不同的函数,可以有所不同,在此本发明无法一一论述。但是本发明对于技术的核心贡献在于函数及参数批量提取的方式,从根本上改变了电子数据表中函数执行的过程,使得针对该函数的优化执行成为可能。对于单独一个函数的执行也可以采用一定的优化执行方案,而对于函数的批量执行而言,不仅可以采用原有的优化执行方案,还可以采用更高级的组合排序等优化执行策略,以进一步提高函数的执行效率。
优选的,当所述函数为查询其他数据库或者数据表以获取相应数据时,则所述优化执行可以包括以所述参数的数据集合作为执行参数,查询相应的数据库或者数据表,完成函数执行。
进一步,对于整张电子数据表而言,上述步骤仅仅完成了部分单元格的计算,甚至仅仅完成了单元格公式的一部分的计算,所以,图1所示的方法还可以包括步骤104所述函数执行引擎批量返回所述函数的执行结果;根据所述批量结果,完成整张所述电子数据表的计算。
所述函数执行引擎可以向所述电子数据表批量返回执行结果,由包含在所述电子数据表中的公式执行引擎对其他需要运算的部分进行计算。所述函数执行引擎也可以向独立于所述电子数据表之外的另一个或多个函数执行引擎批量返回执行结果。
参照图2,示出了一种电子数据表的计算装置的结构框图,包括以下部件函数收集单元201,用于扫描电子数据表中的单元格公式,从中收集符合预置条件的函数及其参数;批量提交单元202,用于将所述函数及其参数批量提交给至少一个函数执行引擎;函数执行引擎203,用于针对批量接收的函数及其参数进行优化执行。
所述符合预置条件的函数为所述电子数据表中的全部函数或者某些特定函数;所述批量提交为一次提交或者分批提交。
优选的,当所述函数为查询其他数据库或者数据表以获取相应数据时,则所述优化执行可以包括以所述参数的数据集合作为执行参数,查询相应的数据库或者数据表,完成函数执行。
进一步,图2所述装置的各个部件与电子数据表的关系可以多种多样。例如所述函数执行引擎位于所述电子数据表中,所述函数收集单元、批量提交单元位于外部辅助模块中。或者,所述函数收集单元、批量提交单元以及函数执行引擎都位于外部辅助模块中。或者,所述函数收集单元、批量提交单元以及函数执行引擎都位于所述电子数据表中。
图2所示装置中未详述的部分可以参见图1所示方法的相关部分,为了篇幅考虑,在此不再详述。
针对本发明所述电子数据表的计算方法,下面通过几个实施例进行说明。
实施例1以Java语言为电子数据表编写外部二次开发模块,用于提供ACCT查询函数查询ERP(Enterprise Resource Planning,企业资源管理)数据库中的数据,ACCT定义为public BigDecimal ACCT(String科目代码)。在电子数据表单元格中即可输入公式“=ACCT(″001″)”查询ERP系统中ID为001的科目代码,例如,该代码对应的是现金金额,即查询ERP系统获取相应的现金金额数据。
在ACCT的内部实现中,通过拼装如下SQL语句完成对数据库的查询select金额from科目余额表while科目代码=″001″。在一次ACCT查询函数执行中需要执行以下一系列操作连接数据库、根据函数参数拼装SQL语句、执行SQL语句、关闭数据库连接等等。
假设本实施例中,在一个电子数据表中存在100个单元格,这100个单元格中分别填入为ACCT函数的单元公式查询科目代码001至100,例如,“=ACCT(″001″)”、“=ACCT(″002″)”、……“=ACCT(″100″)”。现有技术则将上述单元公式进行排序后,顺次重复调用上述100个ACCT函数,所耗用的时间近似等于一次ACCT(″001″)调用的100倍。
如果采用本发明进行函数批量计算,则需要考虑对100个ACCT函数的优化执行,因为本发明可以批量收集这100个ACCT函数的所有参数,所以优化执行的方式之一可以为连接数据库、根据函数参数拼装SQL语句、执行SQL语句、重复操作2和3直至完成所有的函数执行、关闭数据库连接。上述优化执行的过程就可以减少连接数据库和关闭数据库连接的多次操作,从而达到提高效率的目的。
为了实现能够在一次执行中就可以完成100个ACCT函数的执行,则首先要求二次开发模块提供批量查询函数用于接受批量查询参数。例如,在二次开发模块设置了ACCTALL函数,定义如下public BigDecimal[]ACCTALL(String[]科目代码),可以接受批量科目代码。
本发明首先对电子数据表内所有单元格内的公式进行扫描,收集所有的ACCT函数及其参数,一次性的批量提交给二次开发模块中的函数执行引擎。该函数执行引擎以包含参数″001″至″100″的数据集合为执行参数调用ACCTALL函数,一次获取100个查询结果数据。在ACCTALL函数的实现中,可通过拼装一条SQL语句完成100个数据的查询Select金额from科目余额表while科目代码in(″001″,″002″,…,″100″)。
假设执行一次ACCTALL耗时10倍于ACCT,相对于100次ACCT顺序调用,则从整体上看,本发明仍可以将电子数据表的整体计算速度提升10倍左右。在实际应用中,经过测算,本发明使ERP系统中电子数据表的整体计算速度有近10倍的提升。
实施例2假设在实施例1中的电子数据表的100个单元格中的单元公式并不仅仅包括ACCT函数,还包括对该函数或者其他参数进行计算的规则。
对于上述情况。本发明可以采用以下两种方式进行计算A、在二次开发模块中设置一个复杂的函数执行引擎,用于执行包括ACCT函数的单元公式。
该方案优选适用于上述100个单元格中的单元公式都是相同的或者相近的情况,批量收集步骤时将整个单元公式收集上来,提交给该复杂的函数执行引擎,批量完成后,返回执行结果给电子数据表。
B、在二次开发模块中设置的仍然是仅仅针对ACCT的函数执行引擎,执行完成之后,向电子数据表返回执行结果,由预置在电子数据表中的其他函数执行引擎完成各个单元格中的单元公式的计算。
该方案优选适用于上述100个单元格中的单元公式不尽相同,难以采用一个通用的函数执行引擎完成,或者该电子数据表已自带相应的执行引擎的情况,采用本发明批量执行的方式将执行结果返回电子数据表,其余的计算工作仍然由该电子数据表完成即可。
实施例3在基于上述实施例的基础上,对于收集到的函数及其参数,还可以充分利用多线程技术并行计算收集到的各类型函数。对于计算环境中有多CPU或者函数执行需要远程数据访问的计算场景而言,能够帮助计算机资源充分利用,计算效率明显提升。
下面通过一个具体的例子对采用直接匹配法收集函数并完成计算的过程进行说明直接匹配法的核心思想就是通过字符串匹配的方法收集函数及其参数。譬如利用Excel完成针对针对某ERP系统的报表在Excel单元格中输入公式=SUM(ACCT(“001”),100),SUM函数是Excel所能识别的,ACCT函数是用来从ERP系统中提取数据的扩展函数,Excel系统不能识别。这时候可以应用直接匹配法1、扫描所有单元公式字符串,对于单元公式中的“函数(参数)”子字符串形式尝试识别为已知的扩展函数及其参数(通知事先预置即可获得),如果识别成功则收集此函数;2、对收集到的函数进行批量计算;3、再次扫描所有单元公式,将单元公式中先前收集到的“函数(参数)”子字符串替换为结果值。譬如=SUM(ACCT(“001”),100)将被替换为=SUM(99,100);4、启动Excel进行重算,此时单元公式已经全部是Excel可以识别的了,可以顺利完成整个电子数据表的计算。
以上对本发明所提供的一种电子数据表的计算方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种电子数据表的计算方法,其特征在于,包括扫描电子数据表中的单元格公式,从中收集符合预置条件的函数及其参数;将所述函数及其参数批量提交给至少一个函数执行引擎;函数执行引擎针对批量接收的函数及其参数进行执行。
2.如权利要求1所述的方法,其特征在于,当所述函数为查询其他数据库或者数据表以获取相应数据时,则;所述执行包括以所述参数的数据集合作为执行参数,查询相应的数据库或者数据表,完成函数执行。
3.如权利要求1所述的方法,其特征在于,所述符合预置条件的函数为所述电子数据表中的全部函数或者某些特定函数。
4.如权利要求1所述的方法,其特征在于,所述批量提交为一次提交或者分批提交。
5.如权利要求1所述的方法,其特征在于,还包括所述函数执行引擎批量返回所述函数的执行结果;根据所述批量结果,完成整张所述电子数据表的计算。
6.一种电子数据表的计算装置,其特征在于,包括函数收集单元,用于扫描电子数据表中的单元格公式,从中收集符合预置条件的函数及其参数;批量提交单元,用于将所述函数及其参数批量提交给至少一个函数执行引擎;函数执行引擎,用于针对批量接收的函数及其参数进行执行。
7.如权利要求6所述的装置,其特征在于,当所述函数为查询其他数据库或者数据表以获取相应数据时,则;所述执行包括以所述参数的数据集合作为执行参数,查询相应的数据库或者数据表,完成函数执行。
8.如权利要求6所述的装置,其特征在于,所述符合预置条件的函数为所述电子数据表中的全部函数或者某些特定函数;所述批量提交为一次提交或者分批提交。
9.如权利要求6所述的装置,其特征在于,所述函数执行引擎位于所述电子数据表中,所述函数收集单元、批量提交单元位于外部辅助模块中。
10.如权利要求6所述的装置,其特征在于,所述函数收集单元、批量提交单元以及函数执行引擎都位于外部辅助模块中;或者,所述函数收集单元、批量提交单元以及函数执行引擎都位于所述电子数据表中。
全文摘要
本发明提供了一种电子数据表函数批量计算的方法和装置,所述方法包括以下步骤扫描电子数据表中的单元格公式,从中收集符合预置条件的函数及其参数;将所述函数及其参数批量提交给至少一个函数执行引擎;函数执行引擎针对批量接收的函数及其参数进行优化执行。本发明首先从需要处理的电子数据表中收集能够应用本发明进行批量计算的函数,然后将电子数据表内所有该函数的参数一次收集完毕,然后针对该函数进行优化执行得到批量结果(例如,以所有参数的数据集合作为新参数完成函数运算),在后续的单元格计算中无需再次独立执行该函数,从而可以大大节约系统资源,提高计算速度。
文档编号G06F17/15GK101055570SQ20071010571
公开日2007年10月17日 申请日期2007年5月25日 优先权日2007年5月25日
发明者乔昕明 申请人:金蝶软件(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1