CN100511212C - 电子表格文件的处理方法及处理装置 - Google Patents
电子表格文件的处理方法及处理装置 Download PDFInfo
- Publication number
- CN100511212C CN100511212C CNB2007101660390A CN200710166039A CN100511212C CN 100511212 C CN100511212 C CN 100511212C CN B2007101660390 A CNB2007101660390 A CN B2007101660390A CN 200710166039 A CN200710166039 A CN 200710166039A CN 100511212 C CN100511212 C CN 100511212C
- Authority
- CN
- China
- Prior art keywords
- array
- sheet
- book
- loaded
- electronic form
- 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
Abstract
本发明公开了一种电子表格文件的处理方法,包括:读入电子表格文件的数组元素;将所述Book数组加载为Book对象;根据用户的工作表选定操作确定相应的Sheet数组,并将所述Sheet数组加载为Sheet对象;获取需要保存的电子表格文件的Book对象、被加载的Sheet对象及未被加载的Sheet数组;将所述Book对象转换成Book数组;将所述被加载的Sheet对象转换成Sheet数组;组合保存所述数组。本发明读取工作簿时,并不需要将Book对象中所有的Sheet对象的byte数组转化成Sheet对象,而只需要动态地将用户访问的工作表所对应的Sheet数组转化成Sheet对象;在保存工作簿时,只需要将用户读取过的、被加载的Sheet对象转换成byte数组,而对于没有被加载的Sheet对象不需要重新生成,从而有效减少了内存资源占用,提高了处理效率。
Description
技术领域
本发明涉及应用程序处理领域,特别涉及一种电子表格文件的读取方法、一种电子表格文件的读取装置、一种电子表格文件的保存方法、一种电子表格文件的保存装置。一种电子表格文件的处理方法以及一种电子表格文件的处理装置。
背景技术
随着计算机技术的发展,电子表格(Spreadsheet)以其强大的表格处理能力,已成为人们进行数据处理的重要工具,现有的电子表格文件(如Excel工作簿),通常包括多个工作表,每个工作表包含多个行和列。现有技术中,当根据用户的读取操作加载该电子表格文件时,需要读取电子表格文件的所有工作表,并加载为内存对象;相应地,在进行保存操作时,也需要将加载的所有工作表对象进行保存。
具体而言,一个电子表格文件通常对应一个Book(文件)对象,一个Book对象通常包括多个Sheet(表页)对象,现有技术中,当读取一个Book对象时,需要对该Book对象中所有的Sheet对象进行加载,例如,某个工作簿中包括100个工作表,采用现有技术读取该工作簿时,会把这个工作簿中的100个工作表对象全部加载到内存中,然而,在实际中,用户往往只是对其中的某一个、某几个或部分工作表进行访问和操作,则这种全部读取的行为明显过度占用内存资源,从而引起处理效率低下的问题。相应地,在采用这种现有技术进行电子表格文件保存时,仍需要将之前全部加载的Sheet对象转换成相应的byte数组,然后再保存这些数组。在这种情况下,即使用户只针对某个Sheet对象进行了操作,对于其它没有操作过的Sheet对象,仍需要转换成相应的byte数组以进行存储,从而更加导致了资源的浪费,严重影响了电子表格文件的处理效率。
所以,本领域技术人员迫切需要发展出一种在减少系统资源占用的前提下,有效提高对电子表格文件的处理效率的处理方法及装置。
发明内容
本发明所要解决的技术问题是提供一种电子表格文件的读取方法、一种电子表格文件的保存方法,以及一种电子表格文件的处理方法,用以解决现有技术中对于电子表格文件的读取和保存操作资源占用过多,处理效率低下的问题。
本发明还提供了一种电子表格文件的读取装置、一种电子表格文件的保存装置,以及一种电子表格文件的处理装置,用以提供上述方法在实际中应用的情形。
为解决上述技术问题,本发明实施例公开了一种电子表格文件的读取方法,包括:
读入电子表格文件的数组元素,所述数组元素包括Book数组及相应的多个Sheet数组,所述Book数组为Book对象的byte数组,所述Sheet数组为单个Sheet对象的byte数组;
将所述Book数组加载为Book对象;
根据用户的工作表选定操作确定相应的Sheet数组,并将所述确定的Sheet数组加载为Sheet对象;Book对象包括一个或多个Sheet对象。
优选的是,所述的方法,还包括:
将当前缺省的Sheet数组加载为缺省Sheet对象。
优选的是,所述确定Sheet数组的步骤包括:
根据用户选定的工作表生成相应Sheet数组的请求信息,所述请求信息包括所述Sheet数组的位置信息和标识信息;
根据Sheet数组的位置信息和标识信息确定所述Sheet数组。
优选的是,所述的方法,还包括:
删除所述已加载为Sheet对象的Sheet数组。
本发明实施例还公开了一种电子表格文件的读取装置,包括:
数组元素读入单元,用于读入电子表格文件的数组元素,所述数组元素包括Book数组及相应的多个Sheet数组,所述Book数组为Book对象的byte数组,所述Sheet数组为单个Sheet对象的byte数组;
Book对象加载单元,用于将所述Book数组加载为Book对象;
Sheet数组确定单元,用于根据用户的工作表选定操作确定相应的Sheet数组;
Sheet对象加载单元,用于将所述确定的Sheet数组加载为Sheet对象;
其中,Book对象包括一个或多个Sheet对象。
优选的是,所述的读取装置,还包括:缺省Sheet对象加载单元,用于将当前缺省的Sheet数组加载为缺省Sheet对象。
优选的是,所述Sheet数组确定单元包括:
请求子单元,用于根据用户选定的工作表生成相应Sheet数组的请求信息,所述请求信息包括所述Sheet数组的位置信息和标识信息;
定位子单元,用于根据Sheet数组的位置信息和标识信息确定所述Sheet数组。
优选的是,所述的读取装置,还包括:删除单元,用于删除所述已加载为Sheet对象的Sheet数组。
本发明实施例还公开了一种电子表格文件的保存方法,包括:
获取需要保存的电子表格文件的Book对象、被加载的Sheet对象及未被加载的Sheet数组,所述被加载的Sheet对象为根据用户的工作表选定操作确定的Sheet数组加载成的Sheet对象,所述Sheet数组为单个Sheet对象的byte数组;Book对象包括一个或多个Sheet对象;
将所述Book对象转换成Book数组,所述Book数组为Book对象的byte数组;
将所述被加载的Sheet对象转换成Sheet数组;
组合保存所述Book数组、转换后的Sheet数组和未被加载的Sheet数组。
优选的是,所述组合保存步骤包括:
将所述Book数组保存为主文件;
将所述Sheet数组保存为所述主文件相应文件块的内容。
优选的是,所述组合保存步骤包括:
根据所述Book数组生成数据库;
将所述Sheet数组保存为所述数据库中相应字段的表数据。
优选的是,所述Sheet对象到Sheet数组的转换为对所述sheet对象进行序列化获得。
本发明实施例还公开了一种电子表格文件的保存装置,包括:
获取单元,用于获取需要保存的电子表格文件的Book对象、被加载的Sheet对象及未被加载的Sheet数组,所述被加载的Sheet对象为根据用户的工作表选定操作确定的Sheet数组加载成的Sheet对象,所述Sheet数组为单个Sheet对象的byte数组;Book对象包括一个或多个Sheet对象;
Book数组转换单元,用于将所述Book对象转换成Book数组,所述Book数组为Book对象的byte数组;
Sheet数组转换单元,用于将所述被加载的Sheet对象转换成Sheet数组;
组合保存单元,用于组合保存所述Book数组、转换后的Sheet数组和未被加载的Sheet数组。
优选的是,所述组合保存单元包括:
Book文件保存子单元,用于将所述Book数组保存为主文件;
Sheet文件保存子单元,用于将所述Sheet数组保存为所述主文件相应文件块的内容。
优选的是,所述组合保存单元包括:
Book数据库生成子单元,用于根据所述Book数组生成数据库;
Sheet数据库保存子单元,用于将所述Sheet数组保存为所述数据库中相应字段的表数据。
本发明实施例还公开了一种电子表格文件的处理方法,包括:
读入电子表格文件的数组元素,所述数组元素包括Book数组及相应的多个Sheet数组,所述Book数组为Book对象的byte数组,所述Sheet数组为单个Sheet对象的byte数组;Book对象包括一个或多个Sheet对象;
将所述Book数组加载为Book对象;
根据用户的工作表选定操作确定相应的Sheet数组,并将所述确定的Sheet数组加载为Sheet对象;
获取需要保存的电子表格文件的Book对象、被加载的Sheet对象及未被加载的Sheet数组;
将所述Book对象转换成Book数组;
将所述被加载的Sheet对象转换成Sheet数组;
组合保存所述Book数组、转换后的Sheet数组和未被加载的Sheet数组。
优选的是,所述的处理方法,还包括:
删除所述已加载为Sheet对象的Sheet数组。
本发明实施例还公开了一种电子表格文件的处理装置,包括:
数组元素读入单元,用于读入电子表格文件的数组元素,所述数组元素包括Book数组及相应的多个Sheet数组,所述Book数组为Book对象的byte数组,所述Sheet数组为单个Sheet对象的byte数组;
Book对象加载单元,用于将所述Book数组加载为Book对象;
Sheet数组确定单元,用于根据用户的工作表选定操作确定相应的Sheet数组;
Sheet对象加载单元,用于将所述确定的Sheet数组加载为Sheet对象;
获取单元,用于获取需要保存的电子表格文件的Book对象、被加载的Sheet对象及未被加载的Sheet数组;
Book数组转换单元,用于将所述Book对象转换成Book数组;
Sheet数组转换单元,用于将所述被加载的Sheet对象转换成Sheet数组;
组合保存单元,用于组合保存所述Book数组、转换后的Sheet数组和未被加载的Sheet数组;
其中,Book对象包括一个或多个Sheet对象。
优选的是,所述的处理装置,还包括:
删除单元,用于删除所述已加载为Sheet对象的Sheet数组。
与现有技术相比,本发明实施例具有以下优点:
本发明通过降低Book对象与各个Sheet对象的耦合度,当读取工作簿时,并不需要将Book对象中所有的Sheet对象的byte数组转化成Sheet对象,而只需要动态地将用户访问的工作表所对应的Sheet数组转化成Sheet对象;相应地,在保存工作簿时,只需要将用户读取过的、被加载的Sheet对象转换成byte数组,而对于没有被加载的Sheet对象,由于它仍然为byte数组形式,因而不需要重新生成,从而有效减少了内存资源的占用,提高了电子表格文件的处理效率。
附图说明
图1是本发明的一种电子表格文件的读取方法实施例的流程图;
图2是本发明的一种电子表格文件的读取装置实施例的结构框图;
图3是应用图2所示的优选实施例进行电子表格文件读取的流程图;
图4是本发明的一种电子表格文件的保存方法实施例的流程图;
图5是本发明的一种电子表格文件的保存装置实施例的结构框图;
图6是应用图5所示的优选实施例进行电子表格文件保存的流程图;
图7是本发明的一种电子表格文件的处理方法实施例的流程图;
图8是本发明的一种电子表格文件的处理装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例的核心构思之一在于,一个电子表格文件的Book对象对应一个文件,将这个文件内部按照表页分成多段。当Book对象加载后,会生成一个数组,但数组的元素不是Sheet对象,而是所有Sheet对象的byte数组,当外部需要访问某一个Sheet时,才动态地将相应的Sheet对象的byte数组加载为Sheet对象,即只将用户触发的表页加载为sheet对象。相应地,在保存文件时,则只需要将被加载的Sheet对象转化成对应的byte数组并写入文件,未被加载的Sheet对象,由于在读取时未作转换,其仍为byte数组的形式,直接写入文件即可。本发明通过降低Book对象与各个Sheet对象的耦合度,当读取工作簿时,并不需要将Book对象中所有的Sheet对象的byte数组转化成Sheet对象,而只需要动态地将用户访问的工作表所对应的Sheet数组转化成Sheet对象;相应地,在保存工作簿时,只需要将用户读取过的、被加载的Sheet对象转换成byte数组,而对于没有被加载的Sheet对象,由于它仍然为byte数组形式,因而不需要重新生成,从而有效减少了内存资源的占用,提高了电子表格文件的处理效率。
参考图1,示出了本发明的一种电子表格文件的读取方法实施例的流程图,具体可以包括以下步骤:
步骤101、读入电子表格文件的数组元素;
其中,所述数组元素包括Book数组及相应的多个Sheet数组,所述Book数组为Book对象的byte数组,所述Sheet数组为单个Sheet对象的byte数组;
步骤102、将所述Book数组加载为Book对象;
步骤103、根据用户的工作表选定操作确定相应的Sheet数组,并将所述Sheet数组加载为Sheet对象。
在实际中,电子表格文件,如EXCEL、财务软件中的报表文件等,多以包含多个工作表的工作簿形式创建,以满足用户数据整合、计算、输出及其它处理需求,例如,在EXCEL中,每个Workbook(工作簿)对象都包含Worksheet(工作表)对象的一个集合。
在本实施例中,为方便数据的传递,电子表格文件以byte数组的形式存在于后台,而在调用时才将byte数组加载为内存对象。因而,在读入电子表格文件时,所读入的是所述电子表格文件的数组元素,即Book对象的byte数组(Book数组),和所述所包含的多个Sheet对象的byte数组(多个Sheet数组)。在实际中,这些Book数组和Sheet数组可以构成一种目录结构,如,一个主文件及对应的多块文件内容,具体而言,即将Book数组作为主文件,用以描述这些数组的公共信息(如名称、路径等),包含的文件块,以及这些文件块的位置信息和标识信息;而将所述Book数组包含的多个Sheet数组,分别作为与其位置信息和标识信息相适应的文件块的内容,从而形成一段完整的二进制数据流。
优选的是,为提高数据的传递效率,还可以在对这种完整数据流形成时和加载时,引入压缩和解压技术,以减少文件的大小,本发明所述压缩和解压技术的采用不作限制。
当用户激活一个工作簿,则需要将读入的Book数组加载为Book对象,提供给用户操作,在实际中,通常还会有一个与工作簿一同激活的缺省工作表,该缺省的Sheet数组可能对应的是第一个工作表,也可能对应的是上次用户操作的工作表,还可能对应其它的工作表,在这种情况下,本实施例还可以包括以下步骤:
将当前缺省的Sheet数组加载为缺省Sheet对象。
即在本实施例中,仅仅是将Book数组及该缺省的Sheet数组加载为内存对象,而不对全部的工作表进行加载处理。
由于在之前形成的目录结构的完整数据流中,各个工作表都对应所述数据流的相应部分,例如,对于一个包含多个文件块的主文件而言,各个工作表都对应相应位置信息和标识信息的文件块内容,因而,在这种松散耦合的基础上,根据用户选定的工作表获得相应的Sheet数组,是可以简单实现的,例如,一种实现方式为:
根据用户选定的工作表生成相应Sheet数组的请求信息,所述请求信息包括所述Sheet数组的位置信息和标识信息;
根据Sheet数组的位置信息和标识信息确定所述Sheet数组。
当然,上述实现方式仅仅用于举例,本领域技术人员采用任一种方式获得用户选定的工作表的Sheet数组都是可行的,例如,在根据数组元素生成的数据库中,获得相应字段的Sheet数组;或者,在根据数组元素生成的哈希表中,取相应关键字(Key)的值(Value)的方式等,都是可行的,本发明对此不需要进行限定。
此外,现有技术中提供了诸多将byte数组转换成对象的方法,例如:
采用以下代码的原理实现:
static private Object bytes2Object(byte raw[])
throws IOException,ClassNotFoundException{
ByteArrayInputStream bais=new ByteArrayInputStream(raw);
ObjectInputStream ois=new ObjectInputStream(bais);
Object o=ois.readObject();
return o;
}
或者,通过对byte数组进行反序列化实现等方式,因而,本领域技术人员根据经验或需要采用任一种方法将所述byte数组加载为对象都是可行的,本发明对此并不需要进行限制。
当将所述Sheet数组加载为Sheet对象后,由于该Sheet数组不再有存在的必要,为进一步减少内存资源的占用,本实施例还可以包括以下步骤:
删除所述已加载为Sheet对象的Sheet数组。
可以看出,本实施例在读取工作簿时,并不需要将Book对象中所有的Sheet对象的byte数组转化成Sheet对象,而只需要动态地将用户访问的工作表所对应的Sheet数组转化成Sheet对象即可,从而有效降低了内存资源的占用,提高了电子表格文件的处理效率。
参考图2,示出了本发明的一种电子表格文件的读取装置实施例的结构框图,所述读取装置20具体可以包括以下单元:
数组元素读入单元201,用于读入电子表格文件的数组元素;
其中,所述数组元素包括Book数组及相应的多个Sheet数组,所述Book数组为Book对象的byte数组,所述Sheet数组为单个Sheet对象的byte数组;
Book对象加载单元202,用于将所述Book数组加载为Book对象;
Sheet数组确定单元203,用于根据用户的工作表选定操作确定相应的Sheet数组;
Sheet对象加载单元204,用于将所述Sheet数组加载为Sheet对象。
在实际中,当用户激活一个工作簿,通常还会有一个与工作簿一同激活的缺省工作表,在这种情况下,本实施例还可以包括缺省Sheet对象加载单元,用于将当前缺省的Sheet数组加载为缺省Sheet对象。
优选的是,在本实施例中,所述Sheet数组确定单元可以包括以下子单元:
请求子单元,用于根据用户选定的工作表生成相应Sheet数组的请求信息,所述请求信息包括所述Sheet数组的位置信息和标识信息;
定位子单元,用于根据Sheet数组的位置信息和标识信息确定所述Sheet数组。
为进一步减少内存资源的占用,在本实施例中,还可以包括删除单元,用于在将所述Sheet数组加载为Sheet对象后,删除所述已加载为Sheet对象的Sheet数组。
参考图3,示出了应用图2所示的优选实施例进行电子表格文件读取的流程图,具体可以包括以下步骤:
步骤301、数组元素读入单元读入电子表格文件的数组元素;
其中,所述数组元素包括Book数组及相应的多个Sheet数组,所述Book数组为Book对象的byte数组,所述Sheet数组为单个Sheet对象的byte数组;
步骤302、Book对象加载单元将所述Book数组加载为Book对象;
步骤303、缺省Sheet对象加载单元将当前缺省的Sheet数组加载为缺省Sheet对象;
步骤304、Sheet数组确定单元根据用户的工作表选定操作确定相应的Sheet数组;
优选的是,可以通过以下子步骤根据用户的工作表选定操作确定相应的Sheet数组:
子步骤A1、请求子单元根据用户选定的工作表生成相应Sheet数组的请求信息;
其中,所述请求信息包括所述Sheet数组的位置信息和标识信息;
子步骤A2、定位子单元根据Sheet数组的位置信息和标识信息确定所述Sheet数组。
步骤305、Sheet对象加载单元将所述Sheet数组加载为Sheet对象;
步骤306、删除单元删除所述已加载为Sheet对象的Sheet数组。
对于装置实施例而言,由于其基本相应于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
参考图4,示出了本发明的一种电子表格文件的保存方法实施例的流程图,具体可以包括以下步骤:
步骤401、获取需要保存的电子表格文件的Book对象、被加载的Sheet对象及未被加载的Sheet数组;
其中,所述被加载的Sheet对象是为提供给用户访问,根据用户的工作表选定操作确定的相应Sheet数组所加载的Sheet对象,所述Sheet数组为单个Sheet对象的byte数组;
步骤402、将所述Book对象转换成Book数组;
其中,所述Book数组为Book对象的byte数组;
步骤403、将所述被加载的Sheet对象转换成Sheet数组;
步骤404、组合保存所述Book数组、转换后的Sheet数组和未被加载的Sheet数组。
当用户发出电子表格文件的保存指令,即可触发需要保存的电子表格文件的Book对象、被加载的Sheet对象及未被加载的Sheet数组地获取,由于在读入电子表格文件时,相应的Book数组会被加载为Book对象,用户访问的Sheet数组会被加载成的Sheet对象,而在保存时,需要将它们转换成数组进行保存。
由于在本实施例中,所述Sheet对象的加载行为仅针对用户的工作表选定操作所确定的Sheet数组实施,因而,在用户不是对一个工作簿中的全部工作表进行过访问的情况下,保存时所获取的电子表格文件的内容包括Book对象、被加载的Sheet对象及未被加载的Sheet数组,因而,本实施例在实际中的具体过程可以为:
将该电子表格文件的Book对象转换成Book数组;
遍历Book对象的所有Sheet元素,如果所述Sheet元素是被加载的Sheet对象,则将该Sheet对象转换成Sheet数组;如果所述Sheet元素为Sheet数组,则保留其原始状态;
按照前述目录结构或其它方式组合这些数组,以构成一个完整的二进制数据流进行保存。
具体而言,在本实施例中,可以通过以下子步骤组合保存所述数组元素:
子步骤B1、将所述Book数组保存为主文件;
子步骤B2、将所述Sheet数组保存为所述主文件相应文件块的内容。
作为另一实施例,还可以通过以下子步骤组合保存所述数组元素:
子步骤C1、根据所述Book数组生成数据库;
子步骤C2、将所述Sheet数组保存为所述数据库中相应字段的表数据。
当然,上述组合保存数组元素的方法仅仅用于举例,本领域技术人员根据实际需要或经验采用任一种保存方法都是可行的,本发明对不作限制。
此外,在本实施例中,为提高数据的传递效率,也可以在对这种完整数据流保存时,引入压缩和解压技术,以减少文件的大小,当然,本发明所述压缩和解压技术的采用不作限制。
现有技术中,提供了诸多将对象转换成byte数组的方法,本领域技术人员人任意选用一种都是可行的,优选的是,在本实施例中,所述Sheet对象到Sheet数组的转换为对所述sheet对象进行序列化获得,例如,可以参考以下代码的原理实现:
if((o instanceof SheetProxy))//(o instanceof SheetProxy)表示sheet以byte数组的形式存在,还没有转化成sheet对象
{
SheetProxy si=(SheetProxy)o;
Sheet sheet=new Sheet(this,si.getSheetName());
_sheets.set(index,sheet);
_provider.loadSheet(sheet,si.getZipBytes());
sheet.getSheetOption().setSelected(si.isSelected());
sheet.getSheetOption().setHide(si.isHide());
sheet.getSheetOption().setTabColor(si.getTabColor());
sheet.setID(si.getID());
public Sheet getSheet(int index)
{
if(checkSheetIndex(index))
{
Object o=_sheets.get(index);
if((o instanceof SheetProxy))
{
SheetProxy si=(SheetProxy)o;
Sheet sheet=new Sheet(this,si.getSheetName());
_sheets.set(index,sheet);
_provider.loadSheet(sheet,si.getZipBytes());
sheet.getSheetOption().setSelected(si.isSelected());
sheet.getSheetOption().set
可以看出,在本实施例中,在保存工作簿时,只需要将用户读取过的、被加载的Sheet对象转换成byte数组,而对于没有被加载的Sheet对象,由于它仍然为byte数组形式,因而不需要重新生成,从而进一步减少了内存资源的占用,提高了电子表格文件的处理效率。
参考图5,示出了本发明的一种电子表格文件的保存装置实施例的结构框图,所述保存装置50具体可以包括以下单元:
获取单元501,用于获取需要保存的电子表格文件的Book对象、被加载的Sheet对象及未被加载的Sheet数组;
其中,所述被加载的Sheet对象为根据用户的工作表选定操作确定的Sheet数组加载成的Sheet对象,所述Sheet数组为单个Sheet对象的byte数组;
Book数组转换单元502,用于将所述Book对象转换成Book数组;
其中,所述Book数组为Book对象的byte数组;
Sheet数组转换单元503,用于将所述被加载的Sheet对象转换成Sheet数组;
组合保存单元504,用于组合保存所述Book数组、转换后的Sheet数组和未被加载的Sheet数组。
优选的是,本实施例中所述组合保存单元可以包括以下子单元:
Book文件保存子单元,用于将所述Book数组保存为主文件;
Sheet文件保存子单元,用于将所述Sheet数组保存为所述主文件相应文件块的内容。
作为另一实施例,本实施例中所述组合保存单元还可以包括以下子单元:
Book数据库生成子单元,用于根据所述Book数组生成数据库;
Sheet数据库保存子单元,用于将所述Sheet数组保存为所述数据库中相应字段的表数据。
参考图6,示出了应用图5所示的优选实施例进行电子表格文件保存的流程图,具体可以包括以下步骤:
步骤601、获取单元获取需要保存的电子表格文件的Book对象、被加载的Sheet对象及未被加载的Sheet数组;
其中,所述被加载的Sheet对象为根据用户的工作表选定操作确定的Sheet数组加载成的Sheet对象,所述Sheet数组为单个Sheet对象的byte数组;
步骤602、Book数组转换单元将所述Book对象转换成Book数组;
其中,所述Book数组为Book对象的byte数组;
步骤603、Sheet数组转换单元将所述被加载的Sheet对象转换成Sheet数组;
步骤604、组合保存单元组合保存所述Book数组、转换后的Sheet数组和未被加载的Sheet数组。
对于装置实施例而言,由于其基本相应于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
参考图7,示出了本发明的一种电子表格文件的处理方法,具体可以包括以下步骤:
步骤701、读入电子表格文件的数组元素;
所述数组元素包括Book数组及相应的多个Sheet数组,所述Book数组为Book对象的byte数组,所述Sheet数组为单个Sheet对象的byte数组;
步骤702、将所述Book数组加载为Book对象;
步骤703、根据用户的工作表选定操作确定相应的Sheet数组,并将所述Sheet数组加载为Sheet对象;
步骤704、获取需要保存的电子表格文件的Book对象、被加载的Sheet对象及未被加载的Sheet数组;
步骤705、将所述Book对象转换成Book数组;
步骤706、将所述被加载的Sheet对象转换成Sheet数组;
步骤707、组合保存所述Book数组、转换后的Sheet数组和未被加载的Sheet数组。
优选的是,为提高数据传递的效率,本实施例还可以包括步骤:删除所述已加载为Sheet对象的Sheet数组。
对于上述方法实施例的各个步骤,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
参考图8,示出了本发明的一种电子表格文件的处理装置实施例的结构框图,具体可以包括以下单元:
数组元素读入单元801,用于读入电子表格文件的数组元素;
所述数组元素包括Book数组及相应的多个Sheet数组,所述Book数组为Book对象的byte数组,所述Sheet数组为单个Sheet对象的byte数组;
Book对象加载单元802,用于将所述Book数组加载为Book对象;
Sheet数组确定单元803,用于根据用户的工作表选定操作确定相应的Sheet数组;
Sheet对象加载单元804,用于将所述Sheet数组加载为Sheet对象;
获取单元805,用于获取需要保存的电子表格文件的Book对象、被加载的Sheet对象及未被加载的Sheet数组;
Book数组转换单元806,用于将所述Book对象转换成Book数组;
Sheet数组转换单元807,用于将所述被加载的Sheet对象转换成Sheet数组;
组合保存单元808,用于组合保存所述Book数组、转换后的Sheet数组和未被加载的Sheet数组。
优选的是,本实施例还可以包括删除单元,用于删除所述已加载为Sheet对象的Sheet数组。
对于装置实施例而言,由于其基本相应于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
可以看出,本发明在读取工作簿时,并不需要将Book对象中所有的Sheet对象的byte数组转化成Sheet对象,而只需要动态地将用户访问的工作表所对应的Sheet数组转化成Sheet对象;相应地,在保存工作簿时,只需要将用户读取过的、被加载的Sheet对象转换成byte数组,而对于没有被加载的Sheet对象,由于它仍然为byte数组形式,因而不需要重新生成,从而有效减少了内存资源的占用,提高了电子表格文件的处理效率。
对于所述图7和图8所示实施例描述未详尽之处,可以参见前述相关部分的说明,本发明在此不赘述。
可以理解的是,本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上对本发明所提供的一种电子表格文件的读取方法、一种电子表格文件的读取装置、一种电子表格文件的保存方法、一种电子表格文件的保存装置。一种电子表格文件的处理方法以及一种电子表格文件的处理装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (19)
1、一种电子表格文件的读取方法,其特征在于,包括:
读入电子表格文件的数组元素,所述数组元素包括Book数组及相应的多个Sheet数组,所述Book数组为Book对象的byte数组,所述Sheet数组为单个Sheet对象的byte数组;
将所述Book数组加载为Book对象;
根据用户的工作表选定操作确定相应的Sheet数组,并将所述确定的Sheet数组加载为Sheet对象;Book对象包括一个或多个Sheet对象。
2、如权利要求1所述的读取方法,其特征在于,所述将所述Book数组加载为Book对象的过程中,还包括:
将当前缺省的Sheet数组加载为缺省Sheet对象。
3、如权利要求1或2所述的读取方法,其特征在于,所述确定Sheet数组的步骤包括:
根据用户选定的工作表生成相应Sheet数组的请求信息,所述请求信息包括所述Sheet数组的位置信息和标识信息;
根据Sheet数组的位置信息和标识信息确定所述Sheet数组。
4、如权利要求1或2所述的读取方法,其特征在于,还包括:
删除所述已加载为Sheet对象的Sheet数组。
5、一种电子表格文件的读取装置,其特征在于,包括:
数组元素读入单元,用于读入电子表格文件的数组元素,所述数组元素包括Book数组及相应的多个Sheet数组,所述Book数组为Book对象的byte数组,所述Sheet数组为单个Sheet对象的byte数组;
Book对象加载单元,用于将所述Book数组加载为Book对象;
Sheet数组确定单元,用于根据用户的工作表选定操作确定相应的Sheet数组;
Sheet对象加载单元,用于将所述确定的Sheet数组加载为Sheet对象;
其中,Book对象包括一个或多个Sheet对象。
6、如权利要求5所述的读取装置,其特征在于,还包括:
缺省Sheet对象加载单元,用于将当前缺省的Sheet数组加载为缺省Sheet对象。
7、如权利要求5或6所述的读取装置,其特征在于,所述Sheet数组确定单元包括:
请求子单元,用于根据用户选定的工作表生成相应Sheet数组的请求信息,所述请求信息包括所述Sheet数组的位置信息和标识信息;
定位子单元,用于根据Sheet数组的位置信息和标识信息确定所述Sheet数组。
8、如权利要求5或6所述的读取装置,其特征在于,还包括:
删除单元,用于删除所述已加载为Sheet对象的Sheet数组。
9、一种电子表格文件的保存方法,其特征在于,包括:
获取需要保存的电子表格文件的Book对象、被加载的Sheet对象及未被加载的Sheet数组,所述被加载的Sheet对象为根据用户的工作表选定操作确定的Sheet数组加载成的Sheet对象,所述Sheet数组为单个Sheet对象的byte数组;Book对象包括一个或多个Sheet对象;
将所述Book对象转换成Book数组,所述Book数组为Book对象的byte数组;
将所述被加载的Sheet对象转换成Sheet数组;
组合保存所述Book数组、转换后的Sheet数组和未被加载的Sheet数组。
10、如权利要求9所述的保存方法,其特征在于,所述组合保存步骤包括:
将所述Book数组保存为主文件;
将所述Sheet数组保存为所述主文件相应文件块的内容。
11、如权利要求9所述的保存方法,其特征在于,所述组合保存步骤包括:
根据所述Book数组生成数据库;
将所述Sheet数组保存为所述数据库中相应字段的表数据。
12、如权利要求9、10或11所述的保存方法,其特征在于,所述Sheet对象到Sheet数组的转换为对所述sheet对象进行序列化获得。
13、一种电子表格文件的保存装置,其特征在于,包括:
获取单元,用于获取需要保存的电子表格文件的Book对象、被加载的Sheet对象及未被加载的Sheet数组,所述被加载的Sheet对象为根据用户的工作表选定操作确定的Sheet数组加载成的Sheet对象,所述Sheet数组为单个Sheet对象的byte数组;Book对象包括一个或多个Sheet对象;
Book数组转换单元,用于将所述Book对象转换成Book数组,所述Book数组为Book对象的byte数组;
Sheet数组转换单元,用于将所述被加载的Sheet对象转换成Sheet数组;
组合保存单元,用于组合保存所述Book数组、转换后的Sheet数组和未被加载的Sheet数组。
14、如权利要求13所述的保存装置,其特征在于,所述组合保存单元包括:
Book文件保存子单元,用于将所述Book数组保存为主文件;
Sheet文件保存子单元,用于将所述Sheet数组保存为所述主文件相应文件块的内容。
15、如权利要求14所述的保存装置,其特征在于,所述组合保存单元包括:
Book数据库生成子单元,用于根据所述Book数组生成数据库;
Sheet数据库保存子单元,用于将所述Sheet数组保存为所述数据库中相应字段的表数据。
16、一种电子表格文件的处理方法,其特征在于,包括:
读入电子表格文件的数组元素,所述数组元素包括Book数组及相应的多个Sheet数组,所述Book数组为Book对象的byte数组,所述Sheet数组为单个Sheet对象的byte数组;Book对象包括一个或多个Sheet对象;
将所述Book数组加载为Book对象;
根据用户的工作表选定操作确定相应的Sheet数组,并将所述确定的Sheet数组加载为Sheet对象;
获取需要保存的电子表格文件的Book对象、被加载的Sheet对象及未被加载的Sheet数组;
将所述Book对象转换成Book数组;
将所述被加载的Sheet对象转换成Sheet数组;
组合保存所述Book数组、转换后的Sheet数组和未被加载的Sheet数组。
17、如权利要求16所述的处理方法,其特征在于,还包括:
删除所述已加载为Sheet对象的Sheet数组。
18、一种电子表格文件的处理装置,其特征在于,包括:
数组元素读入单元,用于读入电子表格文件的数组元素,所述数组元素包括Book数组及相应的多个Sheet数组,所述Book数组为Book对象的byte数组,所述Sheet数组为单个Sheet对象的byte数组;
Book对象加载单元,用于将所述Book数组加载为Book对象;
Sheet数组确定单元,用于根据用户的工作表选定操作确定相应的Sheet数组;
Sheet对象加载单元,用于将所述确定的Sheet数组加载为Sheet对象;
获取单元,用于获取需要保存的电子表格文件的Book对象、被加载的Sheet对象及未被加载的Sheet数组;
Book数组转换单元,用于将所述Book对象转换成Book数组;
Sheet数组转换单元,用于将所述被加载的Sheet对象转换成Sheet数组;
组合保存单元,用于组合保存所述Book数组、转换后的Sheet数组和未被加载的Sheet数组;
其中,Book对象包括一个或多个Sheet对象。
19、如权利要求18所述的处理装置,其特征在于,还包括:
删除单元,用于删除所述已加载为Sheet对象的Sheet数组。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101660390A CN100511212C (zh) | 2007-10-30 | 2007-10-30 | 电子表格文件的处理方法及处理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101660390A CN100511212C (zh) | 2007-10-30 | 2007-10-30 | 电子表格文件的处理方法及处理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101145148A CN101145148A (zh) | 2008-03-19 |
CN100511212C true CN100511212C (zh) | 2009-07-08 |
Family
ID=39207677
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101660390A Active CN100511212C (zh) | 2007-10-30 | 2007-10-30 | 电子表格文件的处理方法及处理装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100511212C (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105550267B (zh) * | 2015-12-09 | 2018-09-07 | 西南交通大学 | 一种利用Excel格式数据处理焊接性能数据的方法及系统 |
CN107632880B (zh) * | 2017-08-31 | 2021-05-04 | 深圳市丰巢科技有限公司 | 导出excel数据的方法、存储介质及电子设备 |
CN116521845B (zh) * | 2023-05-05 | 2024-03-05 | 四川川大智胜系统集成有限公司 | 一种复杂电子表格文件的读取方法及电子设备 |
-
2007
- 2007-10-30 CN CNB2007101660390A patent/CN100511212C/zh active Active
Non-Patent Citations (4)
Title |
---|
ASP网页中实现对Excel文件的存取. 刘海涛.电脑学习,第1期. 2006 |
ASP网页中实现对Excel文件的存取. 刘海涛.电脑学习,第1期. 2006 * |
在VB中利用ADO动态读取Excel数据. 路明月等.矿山压力与顶板管理,第S3期. 2003 |
在VB中利用ADO动态读取Excel数据. 路明月等.矿山压力与顶板管理,第S3期. 2003 * |
Also Published As
Publication number | Publication date |
---|---|
CN101145148A (zh) | 2008-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7924183B2 (en) | Method and system for reducing required storage during decompression of a compressed file | |
US20090225082A1 (en) | Generating distributed dataflow graphs | |
CN102129425B (zh) | 数据仓库中大对象集合表的访问方法及装置 | |
CN104408100B (zh) | 结构化网站日志的压缩方法 | |
CN111061475B (zh) | 软件代码生成方法、装置、计算机设备和存储介质 | |
CN102708064A (zh) | 从休眠中多阶段恢复 | |
CN106855861A (zh) | 一种文件合并方法、装置及电子设备 | |
CN106528896A (zh) | 一种数据库优化方法和装置 | |
CN103336812B (zh) | 用于提高二次加载效率的网页资源缓存方法及装置 | |
CN100511212C (zh) | 电子表格文件的处理方法及处理装置 | |
CN113254445A (zh) | 实时数据存储方法、装置、计算机设备及存储介质 | |
CN115237857A (zh) | 日志处理方法、装置、计算机设备及存储介质 | |
CN115794437A (zh) | 微服务的调用方法、装置、计算机设备及存储介质 | |
CN108958871A (zh) | 开户页面配置方法、装置、系统及计算机可读存储介质 | |
CN112765270A (zh) | 区块链数据处理方法、装置、计算机设备及介质 | |
CN102982046B (zh) | 一种网页数据压缩存储方法和系统 | |
CN101739589A (zh) | 生成智能卡数据的方法及装置 | |
CN106570152A (zh) | 一种手机号码的海量提取方法及系统 | |
CN115841095A (zh) | 一种文档建立方法、系统、介质及设备 | |
CN1312550C (zh) | 一种将数据转储到移动存储介质以及从其上提取数据的方法 | |
CN107861994B (zh) | 日志整理方法及装置 | |
CN101930451B (zh) | 用于存储高效地搜索至少一个询问数据元素的方法和装置 | |
JP5014212B2 (ja) | メッセージ通信装置及びその制御方法及びコンピュータプログラム | |
CN112347179A (zh) | 一种基于Excel定制模板的大数据导出方法和装置 | |
US20120233224A1 (en) | Data processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |