CN111144082B - 多表格迭代计算方法、装置、电子设备及存储介质 - Google Patents
多表格迭代计算方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111144082B CN111144082B CN201911340956.5A CN201911340956A CN111144082B CN 111144082 B CN111144082 B CN 111144082B CN 201911340956 A CN201911340956 A CN 201911340956A CN 111144082 B CN111144082 B CN 111144082B
- Authority
- CN
- China
- Prior art keywords
- formula
- expression
- calculation
- value
- context
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45529—Embedded in an application, e.g. JavaScript in a Web browser
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
- Retry When Errors Occur (AREA)
Abstract
本申请提供了一种多表格迭代计算方法、装置、电子设备及存储介质,应用于数据分析处理技术领域,其中该方法包括如下步骤:步骤1,初始化应用程序接口并调入函数定义文件;步骤2,获取具有多表格的模板并对多表格中的每个公式进行校验;步骤3,在将所有公式校验通过后执行公式迭代计算,公式迭代计算包括针对公式的最大迭代次数和最大误差值的计算。本申请在防止公式配置错误的基础上,能够控制公式计算的准确性。
Description
技术领域
本申请涉及数据分析处理技术领域,具体而言,本申请涉及一种多表格迭代计算方法、装置、电子设备及存储介质。
背景技术
目前,对于公式的计算尤其是公式中的参数存在引用关系的计算,一般采用例如Excel表格文件的模板来实现,对于模板所具有的每个工作表(sheet)或可理解为表格中的单元格,一般采用poi的方式,把单元格的公式填写到创建的excel文件的sheet中,让excel执行公式运算,然而,当在模板中会对数据来源及公式进行配置时,模板具有多张Sheet,每张Sheet的单元格中会包含公式,并且这些公式可能跨Sheet,这些含有公式的单元格可能存在互相引用,最终形成迭代关系,对于上述配置情况,poi方式无法适用于上述含有公式的迭代循环,更由于无法设置最大迭代次数和最大误差,导致单元格中的公式运算的准确性无法控制。另外,上述模板一般通过存储在本地电脑或者连接局域网的电脑中,无法实现模板在线上导入及展示公式计算结果,这样对于数据和公式可能会经过多次调整的模板无法实现线上灵活地更新进而展示更新计算结果。
发明内容
本申请提供了一种多表格迭代计算方法、装置、电子设备及存储介质,能够在公式迭代计算中对最大迭代次数和最大误差值的计算,保证公式计算的精准度,另外,最大迭代次数和最大误差值可以通过初始化实现灵活修改,此外,可以扩展模板中的函数,再者,还能够获得多表格公式迭代计算方式的线上实现,满足线上数据加工展示的需要,本申请采用的技术方案如下:
第一方面,提供了一种多表格迭代计算方法,该方法包括如下步骤:步骤1,初始化应用程序接口并调入函数定义文件;步骤2,获取具有多表格的模板并对多表格中的每个公式进行校验;步骤3,在将所有公式校验通过后执行公式迭代计算,公式迭代计算包括针对公式的最大迭代次数和最大误差值的计算。
具体地,应用程序接口为脚本引擎工厂,函数定义文件为caculator.js,且函数定义文件中以javascript所定义的定义函数包括模板中的通用函数和用户自定义扩展函数。
具体地,步骤2的具体实现包括如下:步骤2.1,查询出模板的表格中含有公式的所有单元格,准备开始循环校验;步骤2.2,根据转化规则对单元格中公式进行转化;步骤2.3,使用正则表达式对公式进行匹配,得到上下文和坐标分组信息;步骤2.4,根据步骤2.3中匹配出的分组信息,分别创建对应于分组信息的表达式对象并存放到表达式集合中,表达式包括分组信息中的上下文和坐标;步骤2.5,解析表达式集合并生成变量定义代码串,对表达式包含的因子进行初始化;步骤2.6,使用步骤2.5中生成的变量定义代码串,生成公式校验串;步骤2.7,调用脚本引擎工厂对步骤2.6中生成的公式校验串进行校验,如未报错,则所有公式配置正确,校验通过,若报错,则至少一个公式配置有误。
具体地,步骤3的具体实现包括如下:步骤3.1,对最大迭代次数和最大误差值进行初始化参数;步骤3.2,查询多表格中的所有单元格,创建并生成表达式对象集合,表达式包括四个属性:上下文、坐标、单元格值和公式;步骤3.3,从表达式对象集合中筛选出包含公式的公式表达式集合;步骤3.4,计算公式表达式集合中各元素的公式值;步骤3.5,使用表达式对公式值进行匹配,提取当前第一元素的表达式的公式属性中所包含的表达式元素集合,并针对当前第二元素生成初始化变量定义串;步骤3.6,生成当前第一元素的公式计算串,公式计算串中包括初始化变量定义串且得到此次计算差值和用于存放前后两次计算结果之间的差值的临时变量;步骤3.7,调用脚本引擎工厂对步骤3.6生成的公式计算串进行计算;步骤3.8,将此次差值的绝对值与全局误差值作比较,并将全局误差值更新为两者之间比较得出的较大值;步骤3.9,将当前第一元素的坐标更新为临时变量的坐标,完成对当前第一元素的公式计算;步骤3.10,循环运算步骤3.5至步骤3.9,对应完成一次迭代计算,直至迭代计算次数超过最大迭代次数或全局误差值小于最大误差值。
具体地,在步骤3.4中,设当前第一元素为Xi,i=1..m,其中m为公式表达式集合的元素个数,在步骤3.5中,设当前第二元素为Yj,其中j=1..n,n为表达式元素集合的元素个数,且初始化变量定义串为:varYj.context={};var Yj.context.Yj.name=Yj.value;在步骤3.6中,公式计算串为:(function(){varStr;return(_RTN.value=Xi.formula,_RTN.diff=_RTN.value-(Xi.context).(Xi.name));}),其中,_RTN作为临时变量,_RTN.diff为此次计算差值,且context、name、value和formula分别对应于表达式的四个属性:上下文、坐标、单元格值和公式。
第二方面,提供了一种多表格迭代计算装置,该装置包括:接口与调入模块,用于初始化应用程序接口并调入函数定义文件;获取模块,用于获取具有多表格的模板;校验模块,用于对多表格中的每个公式进行校验;计算模块,用于在将所有公式校验通过后执行公式迭代计算。
进一步地,装置还包括:线上录入展示模块,用于接收线上上传的模板和展示任一经过公式迭代计算的公式计算结果;存储模块,用于存储上传的模板以供校验模块和计算模块读或/和写。
第三方面,提供了一种电子设备,该电子设备包括:一个或多个处理器;存储器;一个或多个应用程序,其中一个或多个应用程序被存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序配置用于:执行第一方面所示的多表格迭代计算方法。
第四方面,提供了一种存储介质,存储介质用于存储计算机指令,当其在计算机上运行时,使得计算机可以执行第一方面所示的多表格迭代计算方法。
本申请提供了一种多表格迭代计算方法、装置、电子设备及存储介质,与现有技术无法对公式计算的准确性进行控制相比,本申请通过首先初始化应用程序接口并调入函数定义文件,然后获取具有多表格的模板并对所述多表格中的每个公式进行校验,继而在将所有所述公式校验通过后执行包括针对所述公式的最大迭代次数和最大误差值的计算在内的公式迭代计算,即通过初始化应用程序接口并调入函数定义文件为后续校验和计算准备好执行环境并可以扩展模板中的函数,通过对每个公式进行校验,能够防止公式配置错误,通过针对公式的最大迭代次数和最大误差值的计算,能够保证公式计算的准确度。因此,实现了在防止公式配置错误的基础上,能够控制公式计算的准确性。
本申请附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请实施例的一种多表格迭代计算方法的流程示意图;
图2为针对图1中步骤2的细化流程示意图;
图3为针对图2中步骤2.5的细化流程示意图;
图4为针对图1中步骤3的细化流程示意图;
图5为本申请实施例的一种多表格迭代计算装置的结构示意图;
图6为本申请实施例的一种电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,各实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
首先,需要说明的是,说明书的以下内容均以模板是Excel表格文件为例进行说明,对于模板采用其他类型文件的情形,本领域技术人员可以在参照本申请发明构思的基础上实现本申请。
本申请实施例提供了一种多表格迭代计算方法,参照图1,该方法可以包括以下步骤:
步骤S1,初始化应用程序接口并调入函数定义文件。
具体地,应用程序接口为脚本引擎工厂(ScriptEngineManager),以下简称为:engine,函数定义文件为caculator.js,且函数定义文件中以javascript所定义的定义函数包括Excel中的通用函数和用户自定义扩展函数,另外,可以了解的是,本方法采用JavaSE6内嵌脚本支持的javascript来完成相关校验、计算等。
步骤S2,获取具有多表格的模板并对多表格中的每个公式进行校验。
具体地,模板为一个以上,且优选为多个。模板可以通过线上上传、文件本地批量导入等方式被存储于例如本地数据库、云端数据库等的存储模块中,在获取模板的多表格的单元格中的每个公式时,只需要对存储模块中模板的单元格数据进行抓取,因此,能够方便快捷地实现对各公式的获取进而校验,尤其对于上述线上上传模板方式,相较于线下对模板数据的录入和更新,其高效性、实时性和共享性均显著提高,并且通过对每个公式进行校验,能够防止公式配置错误,便于及时修正模板并保障后续步骤的实施。
步骤S3,在将所有公式校验通过后执行公式迭代计算,公式迭代计算包括针对公式的最大迭代次数和最大误差值的计算。
具体地,举例来说,下面例子(为简洁起见,简称为:例1)中模板的相应表格及单元格:业务!B8、损益!A3和业务!B9三者之间形成了互相迭代关系:
业务!B8=损益!A3+MAX(费用!B5:费用!B7);
损益!A3=业务!B7+业务!B9;
业务!B9=业务!A3/业务!B8*0.25;
对于例1,相互迭代关系形成了相互迭代的公式,对于该公式的公式迭代计算的最大迭代次数和最大误差值可以根据实际需要通过初始化方式灵活修改,因此,通过公式迭代计算可以对通过公式校验步骤的各公式计算出最大迭代次数和最大误差值,实现对公式计算准确性的控制,只有在最大迭代次数和最大误差值满足条件,才将最终计算得到的例如例1的业务!B8的公式计算值作为最终计算结果通过例如网页的线上展示方式来提供,保证了公式计算的准确性。
本申请实施例提供了一种多表格迭代计算方法,与现有技术无法对公式计算的准确性进行控制相比,本申请通过对模板的每个公式进行校验,能够防止公式配置错误,通过针对公式的最大迭代次数和最大误差值的计算,能够保证公式计算的准确度。因此,多表格迭代计算方法实现了对公式计算的准确性的控制。
申请实施例提供了一种可能的实现方式,参考图2,步骤2包括以下具体步骤:
以下假设单元格的公式为XX,并以XX=损益!A3+MAX(费用!B5:费用!B7)作为示例(为简洁起见,简称为:例2)进行详细说明。
步骤S2.1,查询出模板的表格中含有公式的所有单元格,准备开始循环校验。
具体地,对所有单元格中是否含有公式的查询可以通过查找表格中全部有内容的单元格并判断该内容中是否有例如“=”的公式识别符来实现,公式识别符可以根据实际需要而设定。
步骤S2.2,根据转化规则对单元格中公式进行转化。
具体地,转化的规则如下:
i.去除公式中的美元符号。
ii.将公式中的范围矩阵转化为具体数组,比如:B1:B5转化为(=>)[B1,B2,B3,B4,B5]。
iii.将感叹号转化为“.”,比如:业务!A5=>业务.A5。
因此,最终例2中的XX会被转化成XX=损益.A3+MAX(费用.B5,费用.B6,费用.B7)。
步骤S2.3,使用正则表达式对公式进行匹配,得到上下文和坐标分组信息。
具体地,正则表达式为:
([\+\-\*\/,\(\[%]*([^\.\+\-\*\/,\(\[%]+)\.)*([A-Za-z_][A-Za-z0-9_]*)
在采用上述正则表达式对公式进行匹配,得到上下文(context)和坐标(name)分组信息,其中,上下文对应Excel中的sheet名,如例2中匹配得到的上下文为:损益、费用;坐标为对应具体的单元格位置,如例2中匹配得到的坐标为:A3、B5、B6、B7。需要特殊说明的是,作为函数的MAX,这里会被匹配成坐标,但不会影响校验(具体处理见步骤2.5)。最终例2中就会解析出五个分组:损益和A3、null和MAX、费用和B5、费用和B6、费用和B7。
步骤2.4,根据步骤2.3中匹配出的分组信息,分别创建对应于分组信息的表达式(Expression)对象并存放到表达式集合中,表达式包括分组信息中的上下文(context)和坐标(name)。
具体地,例如“损益.A3”创建的Expression对象属性为:{context="损益",name="A3"}。同样的,函数也会对应生成一个Expression,例如MAX函数生成的Expression对象为{context="",name="MAX"}。
步骤2.5,解析表达式集合并生成变量定义代码串,对表达式包含的因子进行初始化。
具体地,变量定义代码串(varStr)属于javascript。
步骤2.6,使用步骤4.5中生成的变量定义代码串,生成公式校验串。
具体地,公式校验串(formulaStr)为:“(function(){varStr;return公式XX);})()”。
步骤2.7,调用脚本引擎工厂对步骤2.6中生成的公式校验串进行校验,如未报错,则所有公式配置正确,校验通过,若报错,则至少一个公式配置有误。
具体地,调用engine对步骤2.6中生成的公式校验串进行的校验为:(engine.eval(formulaStr)),只有所有公式均配置正确,才不报错,因此,防止了公式配置错误。
申请实施例提供了一种可能的实现方式,参照图3,步骤2.5包括以下具体步骤:
步骤2.5.1,过滤掉函数类型的表达式。
具体地,如例2中的MAX函数,可通过判断context=""并且engine.get(MAX)!=null可以知道此Expression是函数。因为以上步骤1引入作为函数定义文件的caculator.js文件,该文件中自定义的MAX,MIN,IFERROR等函数已经加载到engine中,所以可通过engine.get(MAX)!=null进行判断。
步骤2.5.2,判断上下文值,根据上下文值生成变量定义代码串。
具体地,如果context值不为空,则生成“var context值={};context值.name值=0;”,否则,生成“var name值=0”。
综上所述,本申请多表格迭代计算方法通过采用上述步骤2,首先将各单元格中的公式按转化规则进行转化,然后利用正则表达式对公式匹配得到sheet名、函数的上下文、坐标的分组信息,再针对分组对象分别创建表达式对象,进而针对表达式对象所存放的表达式集合生成变量定义代码串,继而由变量定义代码串生成公式校验串,最后调用脚本引擎工厂对公式校验串进行校验,能够判断出公式中单元格格式错误、引用错误、函数名错误、运算符位置错误等错误情况,防止了公式配置错误。
申请实施例提供了一种可能的实现方式,参照图4,步骤3包括以下具体步骤:
步骤S3.1(图中未示出,以下步骤3.2至3.10均为示出),对最大迭代次数和最大误差值进行初始化参数。
具体地,最大迭代次数是指循环引用中重复计算的次数,防止公式无限循环计算;最大误差是指两次重新计算结果之间可接受的最大误差,设置的最大误差数值越小,结果越精确,最大迭代次数和最大误差值通过初始化可以实现灵活修改从而设置为理想值,保证对公式准确性的控制。
步骤3.2,查询多表格中的所有单元格,创建并生成表达式(Expression)对象集合(expressions),表达式包括四个属性:上下文、坐标、单元格值和公式。
具体地,Expression包含了四个属性:context、name、value、formula,分别对应上下文、坐标、单元格值和公式。
步骤3.3,从表达式对象集合中筛选出包含公式的公式表达式集合(formulaExpressions)。
步骤3.4,计算公式表达式集合中各元素的公式值。
具体地,假设当前元素为Xi,i=1..m,m为formula Expressions集合元素个数。
步骤3.5,使用表达式对公式值进行匹配,提取当前第一元素的表达式的公式属性中所包含的表达式元素集合,并针对当前第二元素生成初始化变量定义串。
具体地,类同于上述步骤2.3,提取Xi的属性formula中所包含的Expression元素集合element Expressions,假设当前元素为Yj,生成初始化变量定义串(varStr):“varYj.context={};var Yj.context.Yj.name=Yj.value”,其中j=1..n,n为elementExpressions的元素个数。
步骤3.6,生成当前第一元素的公式计算串,公式计算串中包括初始化变量定义串且得到此次计算差值和用于存放前后两次计算结果之间的差值的临时变量。
具体地,生成Xi的公式计算串(formulaStr)为:“(function(){varStr;return(_RTN.value=Xi.formula,_RTN.diff=_RTN.value-(Xi.context).(Xi.name));})”,其中_RTN作为临时变量,其用于存放此次计算结果和前后两次计算结果之间的差值。
步骤3.7,调用脚本引擎工厂对步骤3.6生成的公式计算串进行计算。
具体地,engine对公式计算串进行的计算为:(engine.eval(formulaStr))。
步骤3.8,将此次差值的绝对值与全局误差值作比较,并将全局误差值更新为两者之间比较得出的较大值。
具体地,该全局误差值作为与上述已初始化的最大误差值作比较的参照值,用于对公式计算准确性的控制。
步骤3.9,将当前第一元素的坐标更新为临时变量的坐标,完成对当前第一元素的公式计算;
具体地,更新Xi.value=_RTN.value,完成此次公式Xi计算。
步骤3.10,循环运算步骤3.5至步骤3.9,对应完成一次迭代计算,直至迭代计算次数超过最大迭代次数或全局误差值小于最大误差值。
综上所述,本申请多表格迭代计算方法通过采用上述步骤3,在通过上述步骤2已保证公式配置正确的基础上,首先初始化最大迭代次数和最大误差值,再生成具有多种属性的表达式并将筛选具有公式属性的表达式得到公式表达式集合,在迭代次数未超过最大迭代次数或全局误差值大于最大误差值情况下,一直循环对公式的计算,直至迭代次数达到最大迭代次数或全局误差值小于最大误差值,因此,在实现有限次迭代计算的基础上保证获得尽可能误差值小的公式计算值。
图5为本申请实施例提供的一种多表格迭代计算装置,该装置20包括:接口与调入模块201、获取模块202、校验模块203以及计算模块204,其中,接口与调入模块201用于初始化应用程序接口并调入函数定义文件。获取模块202用于获取具有多表格的模板,获取方式可以是对经线上上传并存储于例如本地数据库、云端数据库等的存储模块中的模块进行数据访问、采集等。校验模块203用于对多表格中的每个公式进行校验,计算模块204用于在将所有公式校验通过后执行公式迭代计算。可以理解的是,各个模块间相互电连接,另外,需要了解的是,本装置采用Java SE6内嵌脚本支持的javascript来实现各相关模块的功能。
本申请实施例提供了一种可能的实现方式,其中,装置20还包括:线上录入展示模块205,用于接收线上上传的模板和展示任一经过公式迭代计算的公式计算结果;存储模块206,用于存储上传的模板以供校验模块和计算模块读或/和写。因此,装置20能够实现线上模板的导入并线上展示模板中包含公式单元格的对应公式计算结果,满足线上数据加工展示的需要,保证了模板适应于数据和公式可能的多次调整。
本实施例的多表格迭代计算装置可执行本申请上述实施例中提供的一种多表格迭代计算方法,其实现原理相类似,此处不再赘述。
本申请实施例提供了一种电子设备,参照图6,电子设备30包括:处理器301和存储器303。其中,处理器301和存储器303相连,如通过总线302相连。该电子设备30的结构并不构成对本申请实施例的限定。其中,处理器301应用于本申请实施例中,用于实现图5所示的接口与调入模块、获取模块、校验模块、计算模块、线上录入展示模块和存储模块的功能。
处理器301可以是CPU,通用处理器,DSP,ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器301也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线302可包括一通路,在上述组件之间传送信息。总线302可以是PCI总线或EISA总线等。总线302可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器303可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、CD-ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器303用于存储执行本申请方案的应用程序代码,并由处理器401来控制执行。处理器301用于执行存储器303中存储的应用程序代码,以实现图5所示实施例提供的多表格迭代计算装置的功能。
本申请实施例提供了一种电子设备适用于上述方法实施例,因此,可以获得上述方法实施例所具有任一技术效果,在此不再赘述。
本申请实施例提供了一种存储介质,该存储介质用于存储计算机指令,当其在计算机上运行时,使得计算机可以执行上述实施例中所示的多表格迭代计算方法。
本申请实施例提供了一种存储介质适用于上述方法实施例,因此,可以获得上述方法实施例所具有任一技术效果,在此不再赘述。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (9)
1.一种多表格迭代计算方法,其特征在于,包括如下步骤:
步骤1,初始化应用程序接口并调入函数定义文件,所述应用程序接口为脚本引擎工厂;
步骤2,获取具有多表格的模板并对所述多表格中的每个公式进行校验,具体包括:
步骤2.1,查询出所述模板的表格中含有公式的所有单元格,准备开始循环校验;
步骤2.2,根据转化规则对所述单元格中公式进行转化;
步骤2.3,使用正则表达式对所述公式进行匹配,得到上下文和坐标分组信息,其中,所述上下文对应Excel中的sheet名,所述坐标对应具体的单元格位置;
步骤2.4,根据所述步骤2.3中匹配出的分组信息,分别创建对应于所述分组信息的表达式对象并存放到表达式集合中,表达式包括所述分组信息中的上下文和坐标;
步骤2.5,解析所述表达式集合并生成变量定义代码串,对所述表达式包含的因子进行初始化;
步骤2.6,使用所述步骤2.5中生成的变量定义代码串,生成公式校验串;
步骤2.7,调用所述脚本引擎工厂对所述步骤2.6中生成的公式校验串进行校验,如未报错,则所有所述公式配置正确,校验通过,若报错,则至少一个所述公式配置有误;
步骤3,在将所有所述公式校验通过后执行公式迭代计算,所述公式迭代计算包括针对所述公式的最大迭代次数和最大误差值的计算。
2.根据权利要求1所述的方法,其特征在于:
所述函数定义文件为caculator.js,且所述函数定义文件中以javascript所定义的定义函数包括所述模板中的通用函数和用户自定义扩展函数。
3.根据权利要求1所述的方法,其特征在于,所述步骤2.5的具体实现包括如下:
步骤2.5.1,过滤掉函数类型的表达式;
步骤2.5.2,判断上下文值,根据所述上下文值,生成所述变量定义代码串。
4.根据权利要求1或2所述的方法,其特征在于,所述步骤3的具体实现包括如下:
步骤3.1,对所述最大迭代次数和所述最大误差值进行初始化参数;
步骤3.2,查询所述多表格中的所有单元格,创建并生成表达式对象集合,所述表达式包括四个属性:上下文、坐标、单元格值和公式;
步骤3.3,从表达式对象集合中筛选出包含公式的公式表达式集合;
步骤3.4,计算所述公式表达式集合中各元素的公式值;
步骤3.5,使用所述表达式对所述公式值进行匹配,提取当前第一元素的表达式的公式属性中所包含的表达式元素集合,并针对当前第二元素生成初始化变量定义串;
步骤3.6,生成所述当前第一元素的公式计算串,所述公式计算串中包括所述初始化变量定义串且得到此次计算差值和用于存放前后两次计算结果之间的差值的临时变量;
步骤3.7,调用所述脚本引擎工厂对所述步骤3.6生成的所述公式计算串进行计算;
步骤3.8,将此次差值的绝对值与全局误差值作比较,并将所述全局误差值更新为两者之间比较得出的较大值;
步骤3.9,将所述当前第一元素的坐标更新为所述临时变量的坐标,完成对所述当前第一元素的公式计算;
步骤3.10,循环运算步骤3.5至步骤3.9,对应完成一次迭代计算,直至迭代计算次数超过所述最大迭代次数或所述全局误差值小于最大误差值。
5.根据权利要求4所述的方法,其特征在于:
在所述步骤3.4中,设所述当前第一元素为Xi,i=1..m,其中m为公式表达式集合的元素个数,在所述步骤3.5中,设所述当前第二元素为Yj,其中j=1..n,n为表达式元素集合的元素个数,且所述初始化变量定义串为:varYj.context={};varYj.context.Yj.name=Yj.value;在所述步骤3.6中,所述公式计算串为:(function(){varStr;return(_RTN.value=Xi.formula,_RTN.diff=_RTN.value-(Xi.context).(Xi.name));}),其中,_RTN作为临时变量,_RTN.diff为此次计算差值,且context、name、value和formula分别对应于表达式的所述四个属性:上下文、坐标、单元格值和公式。
6.一种多表格迭代计算装置,其特征在于,包括:
接口与调入模块,用于初始化应用程序接口并调入函数定义文件,所述应用程序接口为脚本引擎工厂;
获取模块,用于获取具有多表格的模板,具体包括:
步骤2.1,查询出所述模板的表格中含有公式的所有单元格,准备开始循环校验;
步骤2.2,根据转化规则对所述单元格中公式进行转化;
步骤2.3,使用正则表达式对所述公式进行匹配,得到上下文和坐标分组信息,其中,所述上下文对应Excel中的sheet名,所述坐标对应具体的单元格位置;
步骤2.4,根据所述步骤2.3中匹配出的分组信息,分别创建对应于所述分组信息的表达式对象并存放到表达式集合中,表达式包括所述分组信息中的上下文和坐标;
步骤2.5,解析所述表达式集合并生成变量定义代码串,对所述表达式包含的因子进行初始化;
步骤2.6,使用所述步骤2.5中生成的变量定义代码串,生成公式校验串;
步骤2.7,调用所述脚本引擎工厂对所述步骤2.6中生成的公式校验串进行校验,如未报错,则所有所述公式配置正确,校验通过,若报错,则至少一个所述公式配置有误;
校验模块,用于对所述多表格中的每个公式进行校验;
计算模块,用于在将所有所述公式校验通过后执行公式迭代计算。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
线上录入展示模块,用于接收线上上传的所述模板和展示任一经过所述公式迭代计算的公式计算结果;
存储模块,用于存储所述上传的模板以供所述校验模块和所述计算模块读或/和写。
8.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于:执行根据权利要求1至5任一项所述的多表格迭代计算方法。
9.一种存储介质,其特征在于,所述存储介质用于存储计算机指令,当其在计算机上运行时,使得计算机可以执行所述权利要求1至5中任一项所述的多表格迭代计算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911340956.5A CN111144082B (zh) | 2019-12-23 | 2019-12-23 | 多表格迭代计算方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911340956.5A CN111144082B (zh) | 2019-12-23 | 2019-12-23 | 多表格迭代计算方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111144082A CN111144082A (zh) | 2020-05-12 |
CN111144082B true CN111144082B (zh) | 2023-05-12 |
Family
ID=70519513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911340956.5A Active CN111144082B (zh) | 2019-12-23 | 2019-12-23 | 多表格迭代计算方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111144082B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111966669B (zh) * | 2020-06-29 | 2024-03-15 | 浪潮通用软件有限公司 | 一种报表数据校验方法、设备及介质 |
CN112329387B (zh) * | 2020-11-03 | 2024-03-05 | 新奥数能科技有限公司 | 一种公式模板配置方法及装置 |
CN112861492B (zh) * | 2021-01-27 | 2024-07-23 | 亿企赢网络科技有限公司 | 一种报表表内表间联动计算的方法、装置及电子设备 |
CN113672614A (zh) * | 2021-07-20 | 2021-11-19 | 浙江大华技术股份有限公司 | 函数校验方法、计算机设备及存储装置 |
CN114489832B (zh) * | 2021-12-31 | 2024-09-06 | 中国航空工业集团公司西安飞机设计研究所 | 一种基于配置表的服务引擎调度方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102004645A (zh) * | 2010-12-17 | 2011-04-06 | 无锡永中软件有限公司 | 一种实现电子表格单变量求解的方法 |
CN103440349A (zh) * | 2013-09-16 | 2013-12-11 | 国电南瑞科技股份有限公司 | 一种城市轨道交通车站数据验证方法 |
CN104285209A (zh) * | 2011-12-29 | 2015-01-14 | 比博实验室公司 | 适用于报告生成的基于电子表格的编程语言 |
CN107248065A (zh) * | 2017-06-08 | 2017-10-13 | 中国建设银行股份有限公司 | 线上报表管理方法、系统、装置及存储介质 |
CN108170638A (zh) * | 2017-12-21 | 2018-06-15 | 平安科技(深圳)有限公司 | 基于Excel表的计算方法、装置、设备及存储介质 |
CN109829144A (zh) * | 2018-12-28 | 2019-05-31 | 陈德芹 | 一种在线表格跨表引用方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8271519B2 (en) * | 2010-11-01 | 2012-09-18 | Sas Institute Inc. | Systems and methods for fast remote data access from a spreadsheet |
-
2019
- 2019-12-23 CN CN201911340956.5A patent/CN111144082B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102004645A (zh) * | 2010-12-17 | 2011-04-06 | 无锡永中软件有限公司 | 一种实现电子表格单变量求解的方法 |
CN104285209A (zh) * | 2011-12-29 | 2015-01-14 | 比博实验室公司 | 适用于报告生成的基于电子表格的编程语言 |
CN103440349A (zh) * | 2013-09-16 | 2013-12-11 | 国电南瑞科技股份有限公司 | 一种城市轨道交通车站数据验证方法 |
CN107248065A (zh) * | 2017-06-08 | 2017-10-13 | 中国建设银行股份有限公司 | 线上报表管理方法、系统、装置及存储介质 |
CN108170638A (zh) * | 2017-12-21 | 2018-06-15 | 平安科技(深圳)有限公司 | 基于Excel表的计算方法、装置、设备及存储介质 |
CN109829144A (zh) * | 2018-12-28 | 2019-05-31 | 陈德芹 | 一种在线表格跨表引用方法及装置 |
Non-Patent Citations (2)
Title |
---|
ECharts: A declarative framework for rapid construction of web-based visualization;Deqing Li,et al;《Visual Informatics》;20180517;正文第126-146页 * |
基于统一网络管理平台的报表设计器的研究与实现;宋广元;《中国优秀硕士学位论文全文数据库 信息科技辑》;20070415;正文第30-67页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111144082A (zh) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111144082B (zh) | 多表格迭代计算方法、装置、电子设备及存储介质 | |
CN114443503B (zh) | 测试用例的生成方法、装置、计算机设备、存储介质 | |
CN101290622A (zh) | 数据库清洗系统及方法 | |
CN109241163B (zh) | 电子凭证的生成方法及终端设备 | |
CN109344169B (zh) | 数据处理方法及装置 | |
CN112328575B (zh) | 数据资产血缘生成方法、装置、电子设备 | |
Scholz | The signature method for DAEs arising in the modeling of electrical circuits | |
CN117493309A (zh) | 一种标准模型生成方法、装置、设备及存储介质 | |
CN114564336B (zh) | 数据一致性校验方法、装置、设备以及存储介质 | |
CN114365049B (zh) | 使用生产数据快速建模的方法、系统、和存储介质 | |
CN106330556B (zh) | 一种用于生成服务模块调用关联信息的方法与装置 | |
Oki | Improved structural methods for nonlinear differential-algebraic equations via combinatorial relaxation | |
CN113076365A (zh) | 数据同步方法、装置、电子设备及存储介质 | |
CN110134843A (zh) | 一种目标文件的生成方法以及装置 | |
CN111080209A (zh) | 一种bom的验证方法、系统、设备以及存储介质 | |
CN112650741A (zh) | 异常数据的识别与修正方法、系统、设备及可读存储介质 | |
CN112579458A (zh) | 精算系统的测试方法、装置、设备及存储介质 | |
CN111813769A (zh) | 数据加工方法与装置 | |
CN115250231B (zh) | 应用配置方法及装置 | |
CN117235061A (zh) | 一种产品业务组件确定方法及装置 | |
CN115168673B (zh) | 一种数据的图形化处理方法、装置、设备及存储介质 | |
CN116501744B (zh) | 仿真数据的自动化建表与入库方法、装置和计算机设备 | |
CN112328638A (zh) | 网关上下游数据对比测试方法、装置、设备及存储介质 | |
CN108959235B (zh) | 文字中获取表达式的方法和装置 | |
Korepanov | Polynomial-valued constant hexagon cohomology |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220916 Address after: 25 Financial Street, Xicheng District, Beijing 100033 Applicant after: CHINA CONSTRUCTION BANK Corp. Address before: 25 Financial Street, Xicheng District, Beijing 100033 Applicant before: CHINA CONSTRUCTION BANK Corp. Applicant before: Jianxin Financial Science and Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |