CN108170638A - 基于Excel表的计算方法、装置、设备及存储介质 - Google Patents
基于Excel表的计算方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN108170638A CN108170638A CN201711415048.9A CN201711415048A CN108170638A CN 108170638 A CN108170638 A CN 108170638A CN 201711415048 A CN201711415048 A CN 201711415048A CN 108170638 A CN108170638 A CN 108170638A
- Authority
- CN
- China
- Prior art keywords
- excel
- java
- java object
- value
- formula
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种基于Excel表的计算方法,该方法包括:当接收到计算指令时,获取目标计算公式,将所述目标计算公式拆分为若干个子公式;读取Excel表的配置文件,按照预设的MAP集合类在所述配置文件中定位所述子公式中的Java对象,并获取所述Java对象的取值;按照预设的Excel宏的公式函数和Java方法之间的对应关系,调用所述子公式对应的Java方法,将所述Java对象的取值代入所述Java方法中进行计算,得到所述目标计算公式的计算结果,其中,所述Java方法用于表示基于所述Java对象的运算规则。本发明还公开了一种基于Excel表的计算装置、设备和一种计算机可读存储介质。本发明能够缩减Excel表计算过程中对内存的消耗,同时提高计算效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及基于Excel表的计算方法、装置、设备及存储介质。
背景技术
目前很多产品报价的计算是通过Excel表完成的,即首先将报价相关数据记录在Excel表中,然后通过Excel提供的运算功能自动计算报价。Excel表计算报价的方式一般为:首先通过poi(poi是一种强大的office操作组件,其提供应用程序编程接口给Java程序对Microsoft Office格式档案进行读和写的功能)解析Excel表,进而根据目标计算公式计算目标单元格的值。
上述计算过程会对Excel的单元格进行迭代,当报价计算公式很复杂时,上述计算过程会由此产生很多Java计算对象,产生的对象将大量占用内存,此时Java虚拟机的垃圾回收机制会不断扫描内存中可以回收的对象,而在计算结果出来前,这些计算的对象都是被引用的,无法进行回收,因此在内存中积压,很容易造成系统宕机,且导致计算效率低下。
发明内容
本发明的主要目的在于提出一种基于Excel表的计算方法、装置、设备及计算机可读存储介质,旨在缩减Excel表计算过程中对内存的消耗,同时提高计算效率。
为实现上述目的,本发明提供一种基于Excel表的计算方法,所述方法包括如下步骤:
当接收到计算指令时,获取目标计算公式,将所述目标计算公式拆分为若干个子公式;
读取Excel表的配置文件,按照预设的MAP集合类在所述配置文件中定位所述子公式中的Java对象,并获取所述Java对象的取值;
按照预设的Excel宏的公式函数和Java方法之间的对应关系,调用所述子公式对应的Java方法,将所述Java对象的取值代入所述Java方法中进行计算,得到所述目标计算公式的计算结果,其中,所述Java方法用于表示基于所述Java对象的运算规则。
优选地,所述当接收到计算指令时,获取目标计算公式,将所述目标计算公式拆分为若干个子公式的步骤之前,还包括:
获取Excel宏的公式函数,将所述公式函数编译为对应的Java方法;
建立所述公式函数和所述Java方法之间的对应关系。
优选地,所述读取Excel表的配置文件,按照预设的MAP集合类在所述配置文件中定位所述子公式中的Java对象,并获取所述Java对象的取值的步骤包括:
读取Excel表的配置文件,识别所述配置文件中用于标识Excel单元格的标签;
将所述标签转换为预设的MAP集合类中定义的键值;
按照预设的键值和Java对象之间的对应关系,将所述子公式中的Java对象转换为对应的键值;
将由所述标签转换得到的所述键值与由所述Java对象转换得到的所述键值进行匹配,得到所述配置文件中与所述Java对象对应的Excel单元格,将所述Excel单元格的取值作为所述Java对象的取值。
优选地,所述将所述标签转换为预设的MAP集合类中定义的键值的步骤包括:
分别获取所述标签中用于标识Excel单元格所在页数、列数和行数的字符及对应的Excel单元格的取值;
将所述字符转换为预设的MAP集合类中分别用于表示Excel表的页数、列数和行数的键值类型,并根据所述Excel单元格的取值为转换得到的所述键值类型进行赋值。
优选地,所述按照预设的Excel宏的公式函数和Java方法之间的对应关系,调用所述子公式对应的Java方法,将所述Java对象的取值代入所述Java方法中进行计算,得到所述目标计算公式的计算结果的步骤之后,还包括:
将所述计算结果在所述Excel表的用户交互界面中进行展示。
此外,为实现上述目的,本发明还提供一种基于Excel表的计算装置,所述装置包括:
拆分模块,用于当接收到计算指令时,获取目标计算公式,将所述目标计算公式拆分为若干个子公式;
获取模块,用于读取Excel表的配置文件,按照预设的MAP集合类在所述配置文件中定位所述子公式中的Java对象,并获取所述Java对象的取值;
计算模块,用于按照预设的Excel宏的公式函数和Java方法之间的对应关系,调用所述子公式对应的Java方法,将所述Java对象的取值代入所述Java方法中进行计算,得到所述目标计算公式的计算结果,其中,所述Java方法用于表示基于所述Java对象的运算规则。
优选地,所述装置还包括:
编译模块,用于获取Excel宏的公式函数,将所述公式函数编译为对应的Java方法;
建立模块,用于建立所述公式函数和所述Java方法之间的对应关系。
优选地,所述获取模块还用于:
读取Excel表的配置文件,识别所述配置文件中用于标识Excel单元格的标签;
将所述标签转换为预设的MAP集合类中定义的键值;
按照预设的键值和Java对象之间的对应关系,将所述子公式中的Java对象转换为对应的键值;
将由所述标签转换得到的所述键值与由所述Java对象转换得到的所述键值进行匹配,得到所述配置文件中与所述Java对象对应的Excel单元格,将所述Excel单元格的取值作为所述Java对象的取值。
此外,为实现上述目的,本发明还提供一种基于Excel表的计算设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于Excel表的计算程序,所述基于Excel表的计算程序被所述处理器执行时实现如上所述的基于Excel表的计算方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有基于Excel表的计算程序,所述基于Excel表的计算程序被处理器执行时实现如上所述的基于Excel表的计算方法的步骤。
本发明当接收到计算指令时,获取目标计算公式,将所述目标计算公式拆分为若干个子公式;读取Excel表的配置文件,按照预设的MAP集合类在所述配置文件中定位所述子公式中的Java对象,并获取所述Java对象的取值;按照预设的Excel宏的公式函数和Java方法之间的对应关系,调用所述子公式对应的Java方法,将所述Java对象的取值代入所述Java方法中进行计算,得到所述目标计算公式的计算结果,其中,所述Java方法用于表示基于所述Java对象的运算规则。本发明通过对目标计算公式进行拆分,进而根据预设的Java方法分别计算每个子公式的值,并得到最终计算结果,相对于现有技术,该计算方式避免了对Excel单元格进行多次迭代,且子公式计算完成后,相应的计算对象可以被正常回收,从而缩减了Excel表计算过程中对内存的消耗,同时提高了计算效率。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的终端结构示意图;
图2为本发明基于Excel表的计算方法第一实施例的流程示意图;
图3为本发明基于Excel表的计算方法第二实施例的流程示意图;
图4为本发明基于Excel表的计算方法第三实施例的流程示意图;
图5为图4中步骤S22的细化步骤示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:当接收到计算指令时,获取目标计算公式,将所述目标计算公式拆分为若干个子公式;读取Excel表的配置文件,按照预设的MAP集合类在所述配置文件中定位所述子公式中的Java对象,并获取所述Java对象的取值;按照预设的Excel宏的公式函数和Java方法之间的对应关系,调用所述子公式对应的Java方法,将所述Java对象的取值代入所述Java方法中进行计算,得到所述目标计算公式的计算结果,其中,所述Java方法用于表示基于所述Java对象的运算规则。
现有的基于Excel表的计算过程会对Excel的单元格进行迭代,当报价计算公式很复杂时,上述计算过程会由此产生很多Java计算对象,产生的对象将大量占用内存,此时Java虚拟机的垃圾回收机制会不断扫描内存中可以回收的对象,而在计算结果出来前,这些计算的对象都是被引用的,无法进行回收,因此在内存中积压,很容易造成系统宕机,且导致计算效率低下。
本发明通过对目标计算公式进行拆分,进而根据预设的Java方法分别计算每个子公式的值,并得到最终计算结果,相对于现有技术,该计算方式避免了对Excel单元格进行多次迭代,且子公式计算完成后,相应的计算对象可以被正常回收,从而缩减了Excel表计算过程中对内存的消耗,同时提高了计算效率。
本发明提供一种基于Excel表的计算方法。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的终端结构示意图。
本发明实施例终端可以是PC,也可以是智能手机、平板电脑便携计算机等具有显示功能的可移动式终端设备。
如图1所示,该终端可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
优选地,终端还可以包括摄像头、RF(Radio Frequency,射频)电路,传感器、音频电路、WiFi模块等等。其中,传感器比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示屏的亮度,接近传感器可在移动终端移动到耳边时,关闭显示屏和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别移动终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;当然,移动终端还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及基于Excel表的计算程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的基于Excel表的计算程序,并执行以下操作:
当接收到计算指令时,获取目标计算公式,将所述目标计算公式拆分为若干个子公式;
读取Excel表的配置文件,按照预设的MAP集合类在所述配置文件中定位所述子公式中的Java对象,并获取所述Java对象的取值;
按照预设的Excel宏的公式函数和Java方法之间的对应关系,调用所述子公式对应的Java方法,将所述Java对象的取值代入所述Java方法中进行计算,得到所述目标计算公式的计算结果,其中,所述Java方法用于表示基于所述Java对象的运算规则。
进一步地,处理器1001可以调用存储器1005中存储的基于Excel表的计算程序,还执行以下操作:
获取Excel宏的公式函数,将所述公式函数编译为对应的Java方法;
建立所述公式函数和所述Java方法之间的对应关系。
进一步地,处理器1001可以调用存储器1005中存储的基于Excel表的计算程序,还执行以下操作:
读取Excel表的配置文件,识别所述配置文件中用于标识Excel单元格的标签;
将所述标签转换为预设的MAP集合类中定义的键值;
按照预设的键值和Java对象之间的对应关系,将所述子公式中的Java对象转换为对应的键值;
将由所述标签转换得到的所述键值与由所述Java对象转换得到的所述键值进行匹配,得到所述配置文件中与所述Java对象对应的Excel单元格,将所述Excel单元格的取值作为所述Java对象的取值。
进一步地,处理器1001可以调用存储器1005中存储的基于Excel表的计算程序,还执行以下操作:
分别获取所述标签中用于标识Excel单元格所在页数、列数和行数的字符及对应的Excel单元格的取值;
将所述字符转换为预设的MAP集合类中分别用于表示Excel表的页数、列数和行数的键值类型,并根据所述Excel单元格的取值为转换得到的所述键值类型进行赋值。
进一步地,处理器1001可以调用存储器1005中存储的基于Excel表的计算程序,还执行以下操作:
将所述计算结果在所述Excel表的用户交互界面中进行展示。
基于上述硬件结构,提出本发明基于Excel表的计算方法实施例。
参照图2,图2为本发明基于Excel表的计算方法第一实施例的流程示意图,所述方法包括:
步骤S10,当接收到计算指令时,获取目标计算公式,将所述目标计算公式拆分为若干个子公式;
Excel是目前常见的商业办公软件,其自带的计算功能为用户对数据进行统计分析提供了极大的方便,然而,随着商业的发展,一些目标参数(如报价、投资、收益)的计算公式也越来越复杂,常规的基于Excel表的计算方法已不能满足复杂公式的计算需求,为此,本实施例提供一种新的基于Excel表的计算方法。
在本实施例中,终端在展示Excel表格时,接收用户基于目标单元格的计算指令,并获取该计算指令中携带的目标计算公式,其中目标计算公式是用户根据Excel的公式编辑格式预先编辑的;在获取到目标计算公式后,终端将该目标计算公式拆分为若干个独立的子公式,具体实施时,拆分规则以及拆分后的子公式数量可预先进行灵活设置。比如,终端可以按照Excel宏中的公式函数的类型对目标计算公式进行拆分,当目标计算公式由加、减、乘、除四种运算规则组成时,可以将该目标计算公式拆分为加运算、减运算、乘运算、除运算等4个子公式,当然也可以将该目标计算公式拆分为2个子公式,其中一个子公式包含加运算和减运算,另一个子公式包含乘运算和除运算。
步骤S20,读取Excel表的配置文件,按照预设的MAP集合类在所述配置文件中定位所述子公式中的Java对象,并获取所述Java对象的取值;
在进行公式拆分后,终端可以通过SAX(Simple API for XML)读取Excel表的配置文件,该配置文件中包含了Excel表格中的单元格信息和单元格中的内容信息。SAX既是一种接口,也是一种软件包,SAX不同于DOM解析,它逐行扫描文档,一边扫描一边解析,由于只是在读取数据时解析数据,因此不需要将所有数据存储在内存中,这对于大型文档的解析是个巨大优势,通过SAX解析Excel,就不会整篇Excel加载到内存中,不会占用大量的Java虚拟机内存。
在读取上述配置文件的过程中,终端按照预设的MAP集合类在该配置文件中定位所述子公式中的Java对象,并获取Java对象的取值。其中,MAP集合类是Java中最常用的集合类之一,MAP集合类中的元素以键值对的形式存储,每个键对应相同或不同的键值。具体地,按照预设的MAP集合类定位子公式中的Java对象的方式可以为:首先将Excel配置文件中用于标识Excel单元格的标签转化为MAP集合类中定义的键值,比如,Excel配置文件中某一标识单元格的标签为sheet1,D4,则可以按照MAP集合类中定义的键值类型将其转换为Calculation,BP,4的键值形式,然后根据该转换得到的键值定位子公式中的Java对象,并获取Java对象的取值,比如针对子公式中某一Java对象Calculation!$BP$4,可以直接按照MAP的层级进行定位取值,第一层取键值为Calculation的sheet页,第二层取BP列,第三层取第4行的值,由此得到该Java对象的取值。
步骤S30,按照预设的Excel宏的公式函数和Java方法之间的对应关系,调用所述子公式对应的Java方法,将所述Java对象的取值代入所述Java方法中进行计算,得到所述目标计算公式的计算结果,其中,所述Java方法用于表示基于所述Java对象的运算规则。
该步骤中,终端按照预设的Excel宏的公式函数和Java方法之间的对应关系,调用与子公式对应的Java方法,比如某一子公式计算需要用到Excel宏的公式函数为SUMPRODUCT(条件求和),则可以调用对应的“excelFunSUMPRODUCT”的Java方法,该Java方法同样实现条件求和。之后,将步骤S20中Java对象的取值代入上述Java方法中进行计算,即可得到每个子公式的值,并进而得到目标计算公式的计算结果。
需要说明的是,计算各子公式的值的过程相互独立且互不影响,当一个子公式的值计算完成之后,Java虚拟机的垃圾回收机制便可将该子公式中的Java对象进行回收,从而避免了大量的Java对象在内存中积压,保证了计算过程的顺利进行。
进一步地,在步骤S30之后,还可以包括步骤:将所述计算结果在所述Excel表的用户交互界面中进行展示。
在计算得出结果值之后,可以将结果值显示Excel表的用户交互界面,比如在计算产品报价时,可将计算得到的最终报价展示在用户上载页的结果页面供用户参考。
在本实施例中,当接收到计算指令时,获取目标计算公式,将所述目标计算公式拆分为若干个子公式;读取Excel表的配置文件,按照预设的MAP集合类在所述配置文件中定位所述子公式中的Java对象,并获取所述Java对象的取值;按照预设的Excel宏的公式函数和Java方法之间的对应关系,调用所述子公式对应的Java方法,将所述Java对象的取值代入所述Java方法中进行计算,得到所述目标计算公式的计算结果。本实施例通过对目标计算公式进行拆分,进而根据预设的Java方法分别计算每个子公式的值,并得到最终计算结果,相对于现有技术,该计算方式避免了对Excel单元格进行多次迭代,且子公式计算完成后,相应的计算对象可以被正常回收,从而缩减了Excel表计算过程中对内存的消耗,同时提高了计算效率。
进一步地,参照图3,图3为本发明基于Excel表的计算方法第二实施例的流程示意图。基于上述图2所示的实施例,在步骤S10之前,还可以包括:
步骤S40,获取Excel宏的公式函数,将所述公式函数编译为对应的Java方法;
该步骤中,为保证后续计算的顺利进行,开发人员需穷举excel宏的所有公式函数,然后将其编译为对应的java方法。具体地,终端可以根据开发人员的编译指令获取Excel宏的公式函数,并将编译为对应的Java方法,比如将excel中的公式函数“SUMPRODUCT(条件求和)”编译为“excelFunSUMPRODUCT”的方法等,由此将excel宏中的所有公式函数重写为java方法。
步骤S50,建立所述公式函数和所述Java方法之间的对应关系。
之后,建立excel宏的公式函数和Java方法之间的对应关系,由此保证某一excel宏的公式函数和其对应的Java方法可以实现相同的运算功能。
本实施例中,通过穷举excel宏的所有公式函数并将其编译为对应的Java方法,后续终端便可通过新编译的Java方法计算目标公式的值,从而避免了直接使用excel宏的公式函数进行计算所导致的内存占用过高、计算效率低下的问题。
进一步地,参照图4,图4为本发明基于Excel表的计算方法第三实施例的流程示意图。基于上述图2所示的实施例,步骤S20可以包括:
步骤S21,读取Excel表的配置文件,识别所述配置文件中用于标识Excel单元格的标签;
该步骤中,终端首先读取Excel表的配置文件,并识别配置文件中用于标识Excel单元格的标签,比如标签“sheet1,D4”即表示位于sheet1页D列第4行的单元格;
步骤S22,将所述标签转换为预设的MAP集合类中定义的键值;
步骤S23,按照预设的键值和Java对象之间的对应关系,将所述子公式中的Java对象转换为对应的键值;
步骤S24,将由所述标签转换得到的所述键值与由所述Java对象转换得到的所述键值进行匹配,得到所述配置文件中与所述Java对象对应的Excel单元格,将所述Excel单元格的取值作为所述Java对象的取值。
然后,终端将上述标签转换为预设的MAP集合类中定义的键值,以便于后续计算取值,比如可以将标签“sheet1,D4”转换为Calculation,BP,4的键值形式;然后按照预设的键值和Java对象之间的对应关系,将子公式中的Java对象转换为对应的键值,比如对于子公式中的Java对象Calculation!$BP$4,可以将其转换为对应的键值形式Calculation,BP,4;之后,将由该标签转换得到的键值与由Java对象转换得到的键值进行匹配,得到所述配置文件中与所述Java对象对应的Excel单元格,将所述Excel单元格的取值作为所述Java对象的取值,比如上述标签sheet1,D4”转换得到的键值为Calculation,BP,4,子公式中的Java对象Calculation!$BP$4转换得到的键值为也为Calculation,BP,4,两者相匹配,此时根据该匹配结果就可以得到Excel表的配置文件中与Java对象Calculation!$BP$4对应的Excel单元格“sheet1,D4”,即第1页D列4行的单元格,该单元格的取值即作为Java对象Calculation!$BP$4的取值。
进一步地,参照图5,图5为图4中步骤S22的细化步骤示意图,步骤S22可以包括:
步骤S221,分别获取所述标签中用于标识Excel单元格所在页数、列数和行数的字符及对应的Excel单元格的取值;
步骤S222,将所述字符转换为预设的MAP集合类中分别用于表示Excel表的页数、列数和行数的键值类型,并根据所述Excel单元格的取值为转换得到的所述键值类型进行赋值。
比如,获取到标签“sheet1,D4”及其对应的单元格取值为100,而对于预先定义的三级MAP集合类,其定义的键值类型包括页、列、行,则对于上述标签“sheet1,D4”,可以按照MAP集合类中定义的键值类型将其转换为Calculation,BP,4的键值形式,其中第一层Calculation代表sheet1页,第二层BP代表D列,第三层代表D列第4行,然后将Calculation,BP,4的键值赋值为100。
在本实施例中,通过预先定义三级MAP集合类,进而将标签转换为预设的MAP集合类中定义的键值,从而实现了对Excel单元格的标记,为后续子公式的计算取值提供了前提保证。
本发明还提供一种基于Excel表的计算装置,所述装置包括:
拆分模块,用于当接收到计算指令时,获取目标计算公式,将所述目标计算公式拆分为若干个子公式;
获取模块,用于读取Excel表的配置文件,按照预设的MAP集合类在所述配置文件中定位所述子公式中的Java对象,并获取所述Java对象的取值;
计算模块,用于按照预设的Excel宏的公式函数和Java方法之间的对应关系,调用所述子公式对应的Java方法,将所述Java对象的取值代入所述Java方法中进行计算,得到所述目标计算公式的计算结果,其中,所述Java方法用于表示基于所述Java对象的运算规则。
进一步地,所述装置还包括:
编译模块,用于获取Excel宏的公式函数,将所述公式函数编译为对应的Java方法;
建立模块,用于建立所述公式函数和所述Java方法之间的对应关系。
进一步地,所述获取模块还用于:
读取Excel表的配置文件,识别所述配置文件中用于标识Excel单元格的标签;
将所述标签转换为预设的MAP集合类中定义的键值;
按照预设的键值和Java对象之间的对应关系,将所述子公式中的Java对象转换为对应的键值;
将由所述标签转换得到的所述键值与由所述Java对象转换得到的所述键值进行匹配,得到所述配置文件中与所述Java对象对应的Excel单元格,将所述Excel单元格的取值作为所述Java对象的取值。
上述各功能模块实现的方法可参照本发明基于Excel表的计算方法实施例,此处不再赘述。
本发明还提供一种计算机可读存储介质。
本发明计算机可读存储介质上存储有基于Excel表的计算程序,所述基于Excel表的计算程序被处理器执行时实现如下步骤:
当接收到计算指令时,获取目标计算公式,将所述目标计算公式拆分为若干个子公式;
读取Excel表的配置文件,按照预设的MAP集合类在所述配置文件中定位所述子公式中的Java对象,并获取所述Java对象的取值;
按照预设的Excel宏的公式函数和Java方法之间的对应关系,调用所述子公式对应的Java方法,将所述Java对象的取值代入所述Java方法中进行计算,得到所述目标计算公式的计算结果,其中,所述Java方法用于表示基于所述Java对象的运算规则。
进一步地,所述基于Excel表的计算程序被处理器执行时还实现如下步骤:
获取Excel宏的公式函数,将所述公式函数编译为对应的Java方法;
建立所述公式函数和所述Java方法之间的对应关系。
进一步地,所述基于Excel表的计算程序被处理器执行时还实现如下步骤:
读取Excel表的配置文件,识别所述配置文件中用于标识Excel单元格的标签;
将所述标签转换为预设的MAP集合类中定义的键值;
按照预设的键值和Java对象之间的对应关系,将所述子公式中的Java对象转换为对应的键值;
将由所述标签转换得到的所述键值与由所述Java对象转换得到的所述键值进行匹配,得到所述配置文件中与所述Java对象对应的Excel单元格,将所述Excel单元格的取值作为所述Java对象的取值。
进一步地,所述基于Excel表的计算程序被处理器执行时还实现如下步骤:
分别获取所述标签中用于标识Excel单元格所在页数、列数和行数的字符及对应的Excel单元格的取值;
将所述字符转换为预设的MAP集合类中分别用于表示Excel表的页数、列数和行数的键值类型,并根据所述Excel单元格的取值为转换得到的所述键值类型进行赋值。
进一步地,所述基于Excel表的计算程序被处理器执行时还实现如下步骤:
将所述计算结果在所述Excel表的用户交互界面中进行展示。
其中,在所述处理器上运行的基于Excel表的计算程序被执行时所实现的方法可参照本发明基于Excel表的计算方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种基于Excel表的计算方法,其特征在于,所述方法包括如下步骤:
当接收到计算指令时,获取目标计算公式,将所述目标计算公式拆分为若干个子公式;
读取Excel表的配置文件,按照预设的MAP集合类在所述配置文件中定位所述子公式中的Java对象,并获取所述Java对象的取值;
按照预设的Excel宏的公式函数和Java方法之间的对应关系,调用所述子公式对应的Java方法,将所述Java对象的取值代入所述Java方法中进行计算,得到所述目标计算公式的计算结果,其中,所述Java方法用于表示基于所述Java对象的运算规则。
2.如权利要求1所述的基于Excel表的计算方法,其特征在于,所述当接收到计算指令时,获取目标计算公式,将所述目标计算公式拆分为若干个子公式的步骤之前,还包括:
获取Excel宏的公式函数,将所述公式函数编译为对应的Java方法;
建立所述公式函数和所述Java方法之间的对应关系。
3.如权利要求1所述的基于Excel表的计算方法,其特征在于,所述读取Excel表的配置文件,按照预设的MAP集合类在所述配置文件中定位所述子公式中的Java对象,并获取所述Java对象的取值的步骤包括:
读取Excel表的配置文件,识别所述配置文件中用于标识Excel单元格的标签;
将所述标签转换为预设的MAP集合类中定义的键值;
按照预设的键值和Java对象之间的对应关系,将所述子公式中的Java对象转换为对应的键值;
将由所述标签转换得到的所述键值与由所述Java对象转换得到的所述键值进行匹配,得到所述配置文件中与所述Java对象对应的Excel单元格,将所述Excel单元格的取值作为所述Java对象的取值。
4.如权利要求3所述的基于Excel表的计算方法,其特征在于,所述将所述标签转换为预设的MAP集合类中定义的键值的步骤包括:
分别获取所述标签中用于标识Excel单元格所在页数、列数和行数的字符及对应的Excel单元格的取值;
将所述字符转换为预设的MAP集合类中分别用于表示Excel表的页数、列数和行数的键值类型,并根据所述Excel单元格的取值为转换得到的所述键值类型进行赋值。
5.如权利要求1至4中任一项所述的基于Excel表的计算方法,其特征在于,所述按照预设的Excel宏的公式函数和Java方法之间的对应关系,调用所述子公式对应的Java方法,将所述Java对象的取值代入所述Java方法中进行计算,得到所述目标计算公式的计算结果的步骤之后,还包括:
将所述计算结果在所述Excel表的用户交互界面中进行展示。
6.一种基于Excel表的计算装置,其特征在于,所述装置包括:
拆分模块,用于当接收到计算指令时,获取目标计算公式,将所述目标计算公式拆分为若干个子公式;
获取模块,用于读取Excel表的配置文件,按照预设的MAP集合类在所述配置文件中定位所述子公式中的Java对象,并获取所述Java对象的取值;
计算模块,用于按照预设的Excel宏的公式函数和Java方法之间的对应关系,调用所述子公式对应的Java方法,将所述Java对象的取值代入所述Java方法中进行计算,得到所述目标计算公式的计算结果,其中,所述Java方法用于表示基于所述Java对象的运算规则。
7.如权利要求6所述的基于Excel表的计算装置,其特征在于,所述装置还包括:
编译模块,用于获取Excel宏的公式函数,将所述公式函数编译为对应的Java方法;
建立模块,用于建立所述公式函数和所述Java方法之间的对应关系。
8.如如权利要求6所述的基于Excel表的计算装置,其特征在于,所述获取模块还用于:
读取Excel表的配置文件,识别所述配置文件中用于标识Excel单元格的标签;
将所述标签转换为预设的MAP集合类中定义的键值;
按照预设的键值和Java对象之间的对应关系,将所述子公式中的Java对象转换为对应的键值;
将由所述标签转换得到的所述键值与由所述Java对象转换得到的所述键值进行匹配,得到所述配置文件中与所述Java对象对应的Excel单元格,将所述Excel单元格的取值作为所述Java对象的取值。
9.一种基于Excel表的计算设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于Excel表的计算程序,所述基于Excel表的计算程序被所述处理器执行时实现如权利要求1至5中任一项所述的基于Excel表的计算方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有基于Excel表的计算程序,所述基于Excel表的计算程序被处理器执行时实现如权利要求1至5中任一项所述的基于Excel表的计算方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711415048.9A CN108170638A (zh) | 2017-12-21 | 2017-12-21 | 基于Excel表的计算方法、装置、设备及存储介质 |
PCT/CN2018/075011 WO2019119624A1 (zh) | 2017-12-21 | 2018-02-02 | 基于Excel表的计算方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711415048.9A CN108170638A (zh) | 2017-12-21 | 2017-12-21 | 基于Excel表的计算方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108170638A true CN108170638A (zh) | 2018-06-15 |
Family
ID=62524018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711415048.9A Pending CN108170638A (zh) | 2017-12-21 | 2017-12-21 | 基于Excel表的计算方法、装置、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108170638A (zh) |
WO (1) | WO2019119624A1 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109783554A (zh) * | 2018-12-13 | 2019-05-21 | 重庆金融资产交易所有限责任公司 | excel文档解析方法、装置及计算机可读存储介质 |
CN110738027A (zh) * | 2019-10-15 | 2020-01-31 | 深圳逻辑汇科技有限公司 | 生成电子表格公式的计算机实现的方法、设备和存储介质 |
CN110826297A (zh) * | 2019-11-05 | 2020-02-21 | 北京锐安科技有限公司 | 一种数据导出方法、装置、设备及存储介质 |
CN111126015A (zh) * | 2019-11-25 | 2020-05-08 | 金蝶软件(中国)有限公司 | 一种报表编制方法、设备及计算机程序产品 |
CN111144082A (zh) * | 2019-12-23 | 2020-05-12 | 中国建设银行股份有限公司 | 多表格迭代计算方法、装置、电子设备及存储介质 |
CN112486463A (zh) * | 2020-12-03 | 2021-03-12 | 安徽经邦软件技术有限公司 | 一种基于公式财务指标智能计算的方法及系统 |
CN113157717A (zh) * | 2021-05-26 | 2021-07-23 | 深圳平安智汇企业信息管理有限公司 | 长数据链路的缓存刷新方法、装置、设备及存储介质 |
CN115080819A (zh) * | 2022-05-13 | 2022-09-20 | 山东鲁软数字科技有限公司 | 薪酬数据分析管理方法及平台 |
CN115981610A (zh) * | 2023-03-17 | 2023-04-18 | 科大国创软件股份有限公司 | 一种基于Lua脚本实现的光伏储能系统的综合运算平台 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649220A (zh) * | 2016-11-29 | 2017-05-10 | 中科曙光信息技术无锡有限公司 | 一种在线excel公式解析方法 |
CN107203500A (zh) * | 2017-01-10 | 2017-09-26 | 大连交通大学 | 基于递归替换展开回溯的excel公式面向对象语言的自动转换方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7730025B1 (en) * | 2004-11-30 | 2010-06-01 | Oracle America, Inc. | Migrating documents |
CN103049280B (zh) * | 2011-10-14 | 2018-04-20 | 浪潮乐金数字移动通信有限公司 | 一种实现按键宏定义功能的方法与移动终端 |
CN103617045A (zh) * | 2013-12-12 | 2014-03-05 | 用友软件股份有限公司 | 基于自定义Excel函数的插件开发系统和插件开发方法 |
CN104090780A (zh) * | 2014-07-31 | 2014-10-08 | 广州视源电子科技股份有限公司 | 自动配置方法以及云编译系统 |
-
2017
- 2017-12-21 CN CN201711415048.9A patent/CN108170638A/zh active Pending
-
2018
- 2018-02-02 WO PCT/CN2018/075011 patent/WO2019119624A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649220A (zh) * | 2016-11-29 | 2017-05-10 | 中科曙光信息技术无锡有限公司 | 一种在线excel公式解析方法 |
CN107203500A (zh) * | 2017-01-10 | 2017-09-26 | 大连交通大学 | 基于递归替换展开回溯的excel公式面向对象语言的自动转换方法 |
Non-Patent Citations (1)
Title |
---|
HOWARDLIUCHENXI: "JAVA实现EXCEL公式专题(一)---EXCEL公式分类与解析步骤", 《CSDN HTTPS://BLOG.CSDN.NET/U011680348/ARTICLE/DETAILS/47356823》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109783554A (zh) * | 2018-12-13 | 2019-05-21 | 重庆金融资产交易所有限责任公司 | excel文档解析方法、装置及计算机可读存储介质 |
WO2021073195A1 (zh) * | 2019-10-15 | 2021-04-22 | 深圳逻辑汇科技有限公司 | 生成电子表格公式的计算机实现的方法、设备和存储介质 |
CN110738027A (zh) * | 2019-10-15 | 2020-01-31 | 深圳逻辑汇科技有限公司 | 生成电子表格公式的计算机实现的方法、设备和存储介质 |
CN110738027B (zh) * | 2019-10-15 | 2023-07-14 | 深圳逻辑汇科技有限公司 | 生成电子表格公式的计算机实现的方法、设备和存储介质 |
CN110826297A (zh) * | 2019-11-05 | 2020-02-21 | 北京锐安科技有限公司 | 一种数据导出方法、装置、设备及存储介质 |
CN111126015A (zh) * | 2019-11-25 | 2020-05-08 | 金蝶软件(中国)有限公司 | 一种报表编制方法、设备及计算机程序产品 |
CN111126015B (zh) * | 2019-11-25 | 2023-12-26 | 金蝶软件(中国)有限公司 | 一种报表编制方法、设备 |
CN111144082B (zh) * | 2019-12-23 | 2023-05-12 | 中国建设银行股份有限公司 | 多表格迭代计算方法、装置、电子设备及存储介质 |
CN111144082A (zh) * | 2019-12-23 | 2020-05-12 | 中国建设银行股份有限公司 | 多表格迭代计算方法、装置、电子设备及存储介质 |
CN112486463A (zh) * | 2020-12-03 | 2021-03-12 | 安徽经邦软件技术有限公司 | 一种基于公式财务指标智能计算的方法及系统 |
CN113157717A (zh) * | 2021-05-26 | 2021-07-23 | 深圳平安智汇企业信息管理有限公司 | 长数据链路的缓存刷新方法、装置、设备及存储介质 |
CN115080819A (zh) * | 2022-05-13 | 2022-09-20 | 山东鲁软数字科技有限公司 | 薪酬数据分析管理方法及平台 |
CN115981610A (zh) * | 2023-03-17 | 2023-04-18 | 科大国创软件股份有限公司 | 一种基于Lua脚本实现的光伏储能系统的综合运算平台 |
CN115981610B (zh) * | 2023-03-17 | 2023-06-02 | 科大国创软件股份有限公司 | 一种基于Lua脚本实现的光伏储能系统的综合运算平台 |
Also Published As
Publication number | Publication date |
---|---|
WO2019119624A1 (zh) | 2019-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108170638A (zh) | 基于Excel表的计算方法、装置、设备及存储介质 | |
CN104820589B (zh) | 一种动态适配网页的方法及其装置 | |
CN108040278A (zh) | 智能电视的活动页处理方法、服务器、系统及存储介质 | |
CN103605502B (zh) | 表单页面显示方法及服务器 | |
CN107704245A (zh) | 协议接入方法、装置及计算机可读存储介质 | |
CN107247691A (zh) | 一种文本信息的显示方法、装置、移动终端及存储介质 | |
CN108121539B (zh) | 组件处理方法和装置 | |
CN111079944B (zh) | 迁移学习模型解释实现方法及装置、电子设备、存储介质 | |
CN106896937A (zh) | 用于输入信息的方法和装置 | |
CN105975446A (zh) | 手机端分模块显示word文档内容的方法及系统 | |
CN104216826A (zh) | 测试方法及装置 | |
CN110532495A (zh) | 一种网页信息的展示方法及装置 | |
CN107391357A (zh) | 应用崩溃重现方法、装置及移动终端 | |
CN110096276A (zh) | 房源展示页面配置方法、设备、存储介质及装置 | |
CN107315833A (zh) | 基于应用程序的检索与下载的方法和装置 | |
CN108628900A (zh) | 一种数据格式获取的方法以及相关装置 | |
CN111223155B (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
CN108170600A (zh) | 前端代码测试的覆盖率统计方法、装置及系统 | |
CN112926008B (zh) | 生成表单页面的方法、装置、电子设备和存储介质 | |
CN106293658A (zh) | 一种界面组件生成方法及其设备 | |
CN114741144B (zh) | 一种web端复杂表格显示方法、装置及系统 | |
CN110929285A (zh) | 一种隐私数据的处理方法及装置 | |
CN105739717A (zh) | 信息输入方法和装置 | |
CN107563666A (zh) | 订单筛选方法及装置、计算机可读存储介质 | |
CN102063501A (zh) | 一种互联网网页转换的方法及装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180615 |