CN109582938B - 报表生成方法和装置 - Google Patents
报表生成方法和装置 Download PDFInfo
- Publication number
- CN109582938B CN109582938B CN201710896569.4A CN201710896569A CN109582938B CN 109582938 B CN109582938 B CN 109582938B CN 201710896569 A CN201710896569 A CN 201710896569A CN 109582938 B CN109582938 B CN 109582938B
- Authority
- CN
- China
- Prior art keywords
- worksheet
- data
- filled
- template
- copy
- 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
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/186—Templates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/177—Editing, e.g. inserting or deleting of tables; using ruled lines
- G06F40/18—Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Strategic Management (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Entrepreneurship & Innovation (AREA)
- Human Resources & Organizations (AREA)
- Data Mining & Analysis (AREA)
- Economics (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了一种报表生成方法和装置,该方法包括:从报表模板中确定出待导入数据的工作表模板以及待写入的数据集;创建工作表模板的工作表副本,并清空工作表模板中各行内的数据,得到待填充工作表;将工作表副本、待填充工作表以及数据集加载到内存中;在内存,将数据集中的数据与工作表副本中各行的数据进行拼接,将拼接得到的各行数据依次写入到待填充工作表中;当待填充工作表中写入数据的行数量达到预设数量时,将该预设数量行导入到磁盘中,并删除待填充工作表中预设数量行;当完成向待填充工作表的数据写入时,拼接磁盘中存储的待填充工作表对应的各行,得到所需生成的报表。该方案可以减少由于内存不足,而导致报表无法生成的情况。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种报表生成方法和装置。
背景技术
在信息管理过程中,经常需要以报表的形式展示数据。如,工作考核过程中,需要通过报表的形式展现员工的工作业绩以及相关数据,以便于统计分析等。
为了提高报表的生成效率,一般会先配置生成报表所需的模板,并将从数据库中获取到的数据导入到模板中,以实现较为快速的生成报表。然而,基于模板生成报表的过程中,需要占用较大的内存,很容易出现由于内存不足而导致报表无法生成的情况。
发明内容
鉴于上述问题,本发明提供了一种克服上述问题或者至少部分地解决上述问题的报表生成方法和装置,以减少由于内存不足,而导致报表无法生成的情况。
为了实现以上目的,本申请提供了一种报表生成方法,包括:
从用于生成报表的报表模板中,确定出待导入数据的工作表模板以及所述工作表模板中待写入的数据集;
创建所述工作表模板的工作表副本,其中,所述工作表副本与所述工作表模板中相同行内的数据相同;
清空所述工作表模板中各行内的数据,得到待写入数据的待填充工作表;
将所述工作表模板对应的所述工作表副本、待填充工作表以及数据集加载到内存中;
在所述内存中,将所述数据集中的数据与所述工作表副本中各行的数据进行拼接,并将拼接得到的各行数据依次写入到所述待填充工作表中;
当所述待填充工作表中写入数据的行数量达到预设数量时,将该待填充工作表中当前写入数据的所述预设数量行导入到磁盘中,并删除所述内存中所述待填充工作表中的所述预设数量行;
当完成向所述待填充工作表的数据写入时,拼接所述磁盘中存储的所述待填充工作表对应的各行,得到所需生成的报表。
优选的,在所述确定出待导入数据的工作表模板以及所述工作表模板中待写入的数据集之后,还包括:
依据所述数据集所包含的数据个数,确定将该数据集中的所有数据写入到所述工作表模板所需占据的目标单元格区域;
所述将拼接得到的各行数据依次写入到所述待填充工作表中,包括:
将拼接得到的各行数据依次写入到所述待填充工作表的目标单元格区域中。
优选的,还包括:
当完成向所述待填充工作表的数据写入时,删除所述内存中存储的所述工作表模板对应的工作表副本、待填充工作表以及数据集。
优选的,所述将所述工作表模板对应的所述工作表副本、待填充工作表以及数据集加载到内存中,包括:
将所述工作表模板对应的所述工作表副本、待填充工作表以及数据集加入临时文件;
将所述临时文件加载到内存中指定的存储空间;
所述将拼接得到的各行数据依次写入到所述待填充工作表中,包括:
将拼接得到的各行数据依次写入到所述临时文件中的所述待填充工作表中。
优选的,所述从用于生成报表的报表模板中,确定出待导入数据的工作表模板以及所述工作表模板中待写入的数据集,包括:
从用于生成报表的报表模板中,确定出待导入数据的至少一个工作表模板以及每个所述工作表模板中待写入的数据集;
所述将所述工作表模板对应的所述工作表副本、待填充工作表以及数据集加载到内存中,包括:
将所述至少一个工作表模板各自对应的工作表副本、待填充工作表以及数据集加载到内存中;
所述在所述内存中,将所述数据集中的数据与所述工作表副本中各行的数据进行拼接,并将拼接得到的各行数据依次写入到所述待填充工作表中,包括:
从所述内存中存储的至少一个待填充工作表中,确定当前待填充的目标待填充工作表,并将所述目标待填充工作表对应的数据集中的数据与所述目标待填充工作表对应的工作表副本中的各行数据进行拼接;
将拼接得到的各行数据依次写入到所述目标待填充工作表中。
另一方面,本申请还提供了一种报表生成装置,包括:
目标确定单元,用于从用于生成报表的报表模板中,确定出待导入数据的工作表模板以及所述工作表模板中待写入的数据集;
副本创建单元,用于创建所述工作表模板的工作表副本,其中,所述工作表副本与所述工作表模板中相同行内的数据相同;
表清空单元,用于清空所述工作表模板中各行内的数据,得到待写入数据的待填充工作表;
数据加载单元,用于将所述工作表模板对应的所述工作表副本、待填充工作表以及数据集加载到内存中;
拼接写入单元,用于在所述内存中,将所述数据集中的数据与所述工作表副本中各行的数据进行拼接,并将拼接得到的各行数据依次写入到所述待填充工作表中;
磁盘转移单元,用于当所述待填充工作表中写入数据的行数量达到预设数量时,将该待填充工作表中当前写入数据的所述预设数量行导入到磁盘中,并删除所述待填充工作表中所述预设数量行;
报表生成单元,用于当完成向所述待填充工作表的数据写入时,拼接所述磁盘中存储的所述待填充工作表对应的各行,得到所需生成的报表。
优选的,还包括:
区域确定单元,用于在所述目标确定单元确定出待导入数据的工作表模板以及所述工作表模板中待写入的数据集之后,依据所述数据集所包含的数据个数,确定将该数据集中的所有数据写入到所述工作表模板所需占据的目标单元格区域;
所述拼接写入单元,包括:
第一拼接写入子单元,用于在所述内存中,将所述数据集中的数据与所述工作表副本中各行的数据进行拼接,将拼接得到的各行数据依次写入到所述待填充工作表的目标单元格区域中。
优选的,还包括:
内存清空单元,用于当完成向所述待填充工作表的数据写入时,删除所述内存中存储的所述工作表模板对应的工作表副本、待填充工作表以及数据集。
另一方面,本申请还提供了一种存储介质,所述存储介质中存储有程序,所述程序被处理器执行时实现以上所述报表生成方法。
另一方面,本申请还提供了一种处理器,所述处理器用于运行程序,所述程序运行时执行以上所述报表生成方法。
借由上述技术方案,本申请在从报表模板中确定出待导入数据的工作表模板以及工作表模板中待写入的数据集之后,会创建该工作表模板的工作表副本,并清空该工作表模板中各行的数据,得到待填充工作表,这样,在将工作表模板对应的工作表副本、待填充工作表以及数据集加载到内存之后,将数据集中的数据与工作表副本中各行的数据进行拼接,并将拼接得到的各行数据依次写入到该待填充工作表中,一旦该待填充工作表中写入数据的行数据量达到预设数量时,则将该待填充工作表中写入数据的该预设数量行转移到磁盘中存储,从而避免内存中存储的数据量过大,而导致内存溢出的情况,减少了由于内存不足而导致报表无法生成的情况。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本申请一种报表生成方法一个实施例的流程示意图;
图2示出了本申请一种报表生成方法又一个实施例的流程示意图;
图3示出了本申请一种报表生成装置一个实施例的组成结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
参见图1,其示出了本申请一种报表生成方法一个实施例的流程示意图,本实施例的方法可以包括:
S101,从用于生成报表的报表模板中,确定出待导入数据的工作表模板以及该工作表模板中待写入的数据集。
其中,报表模板中可以包括多个工作表(sheet)模板。
在基于报表模板生成报表的过程中,可以从报表模板中确定待导入数据的工作表模板。
由于需要导入到该工作表模板中的数据实际上是分布到多行以及多列中的多个数据,因此,将需要导入到工作表模板中的多个数据称为数据集,该数据集可以包括至少一个数据,该至少一个数据分别为需要导入到工作表模板中不同单元格内的数据。
S102,创建该工作表模板的工作表副本。
其中,该工作表副本与该工作表模板中相同行内的数据相同。为了便于与工作表模板进行区分,将与工作表模板中各行内数据相同的工作表称为工作表副本。
如,可以复制该工作表模板中各行内的数据,并将复制得到的包含该工作表模板中各行数据的工作表称为该工作表模板的工作表副本。可以理解的是,该工作表模板中除了包含各行的数据(如,数字、字符以及背景)之外,还可以包括:图片,图表生成关系等,但是,复制该工作表模板一般只可以复制该工作表模板内的背景以及字符,从而使得工作表副本中各行内的数据与该工作表模板相同,但是该工作表副本中不包含该工作表模板中的图片以及图标生成关系等无法直接复制或者读取的内容。
其中,创建工作表副本的目的是为了后续利用该工作表副本中的数据与数据集进行数据拼接,并将拼接后的数据填充到该清空数据后的待填充工作表中,从而得到所需的报表。
S103,清空该工作表模板中各行内的数据,得到待写入数据的待填充工作表。
为了便于区分,将清空数据后的工作表模板称为待填充工作表。其中,该待填充工作表仅仅清空的是各行中写入的字符、函数等数据,但是该待填充工作表中包含的图片、图表生成关系等仍然与该工作表模板中的相关内容以及布局相同。
S104,将该工作表模板对应的工作表副本、待填充工作表以及数据集加载到内存中。
如,可以预先设定内存中用于处理工作表的存储空间,并设定内存中该存储空间中数据转移到磁盘中的相关规则,如,写入工作表中数据的行数超过设定行,则将该工作表的该设定行从内存中该区域移除,并转移到磁盘中。
在一种实现方式中,可以将工作表模板对应的工作表副本、待填充工作表以及数据集加入临时文件,然后,可以将该临时文件加载到内存中指定的存储空间中。
S105,在内存中,将数据集中的数据与该工作表副本中各行的数据进行拼接,并将拼接得到的各行数据依次写入到待填充工作表中。
其中,数据集中的数据需要与工作表副本中的哪个单元格内的数据进行拼接是与该数据集中数据的排序,以及工作表副本中数据所在的行以及列有关,数据集中每个数据只能与工作表副本中一个单元格内的数据进行拼接。
如,将数据集中的数据与工作表副本中各行的数据进行拼接的过程中,是依据数据集中各个数据排序顺序,以及工作表副本中各个单元格内的数据顺序,依次确定数据集中当前待拼接的目标数据,并确定工作表副本中需要与该目标数据进行拼接的目标单元格内的数据,并将目标数据与该目标单元格内的数据进行拼接,依此类推,依次将数据集中的数据与工作表副本中不同行内各个单元格内的数据进行拼接,从而实现数据的逐行拼接。
可以理解的是,在实际应用中,基于用户需求,以及数据集中包含的数据个数,该工作表模板中需要写入数据的区域也会有所不同,因此,在将数据集中的数据与工作表副本中各行数据进行拼接之前,还可以:依据数据集所包含的数据个数,确定将该数据集中的所有数据写入到该工作表模板所需占据的目标单元格区域。相应的,可以将拼接得到的各行数据依次写入到该待填充工作表的目标单元格区域中。
可以理解的是,在以临时文件的形式将数据集以及工作表副本加载到内存的情况中,可以将拼接得到的各行数据依次写入到该临时文件中该待填充工作表中,如,将拼接得到的各行数据依次写入到该临时文件中该待填充工作表中的目标单元格区域。
S106,当该待填充工作表中写入数据的行数量达到预设数量时,将该待填充工作表中当前写入数据的该预设数量行导入到磁盘中,并删除内存中该待填充工作表中该预设数量行。
其中,该预设数量可以根据需要设定,如,该预设数量可以为20,则拼接写入到待填充工作表的行数满足20行,则将该待填充工作表中写有数据的该20行的内容转移到磁盘中。
为了避免内存溢出,在将该预设数量行数据转移到磁盘之后,需要删除内存中该待填充工作表中的该预设数据行。
可以理解的是,在生成报表时,需要将待写入的数据集与工作表模板内各行进行拼接,然而,如果在内存直接完成将数据集内的所有数据与工作表模板的各行数据的拼接,而可能由于拼接完成所有行的数据量过大而导致内存溢出。
为了降低内存溢出的风险,发明人经研究发现:可以监控该工作表模板,当工作表模板中写有数据的行数超过预设数量,则将工作表模板中写有数据的行转移到磁盘中,以减少内存中的数据溢出。
然而,发明人进一步研究发现,工作表模板的各行中本身也会有一些数据,如果工作表模板中存在数据的行数超过该预设数量,系统会自动将工作表模板中写有数据的各行转移到磁盘,从而导致在将数据集内的数据与工作表模板中各行内的数据进行逐行拼接之前,工作表模板内的各行数据已被转移,从而无法实现将数据集内的数据与工作表模板的各行数据进行拼接。为了能够解决该问题,并能够达到降低内存溢出风险的目的,发明人经过多次研究发现,可以在将工作表模板以及数据集加载到内存之前,先创建一个与该工作表模板中各行所包含的数据相同的工作表副本,并清空该工作表模板,这样,清空后的工作表模板的各行都不存在数据,而工作表副本有包含了请空前的工作表模板中各行的数据,这样,可以将数据集内的数据与该工作表副本内各行数据依次进行拼接,从而实现了将数据集内的数据与工作表模板内的各行数据进行逐行拼接的目的。同时,由于拼接出的每行数据会依次写入到该清空后的工作表模板,即待填充工作表内,使得待填充工作表内存在的各行数据也就是所需生成的报表中相应行的数据,这样,在待填充工作表内的写有数据的行数超过预设数量时,将该待填充工作表内的写有数据的各行转移到磁盘中,既实现了依次将生成的报表内的各行导入到磁盘中,又降低了由于内存中存储的数据量过大,而导致内存溢出的情况。
S107,当完成向该待填充工作表的数据写入时,拼接该磁盘中存储的该待填充工作表对应的各行,得到所需生成的报表。
可以理解的是,由于磁盘中存储的数据是从内存中转移过来的多行数据,因此,通过将磁盘中存储的各行数据进行拼接便可以得到填充后的工作表,从而完成报表生成。
可见,在本申请实施例中,在从报表模板中确定出待导入数据的工作表模板以及工作表模板中待写入的数据集之后,会创建该工作表模板的工作表副本,并清空该工作表模板中各行的数据,得到待填充工作表,这样,在将工作表模板对应的工作表副本、待填充工作表以及数据集加载到内存之后,将数据集中的数据与工作表副本中各行的数据进行拼接,并将拼接得到的各行数据依次写入到该待填充工作表中,一旦该待填充工作表中写入数据的行数据量达到预设数量时,则将该待填充工作表中写入数据的该预设数量行转移到磁盘中存储,从而避免内存中存储的数据量过大,而导致内存溢出的情况,减少了由于内存不足而导致报表无法生成的情况。
可以理解的是,本申请实施例中,当完成向该待填充工作表的数据写入时,为了避免无用数据占用内存空间,还可以删除该内存中存储的该工作表模板对应的工作表副本、待填充工作表以及数据集。
可以理解的是,图1是以需要导入数据的工作表模板为一个为例进行说明,但是当需要导入数据的工作表模板为多个时,其过程相似。
为了便于理解,可以参见图2,其示出了本申请一种报表生成方法又一个实施例的流程示意图,本实施例的方法可以包括:
S201,获取用于生成报表的报表模板,并确定该报表模板中待导入数据的至少一个目标工作表模板,以及每个目标工作表模板中待导入的数据集。
其中,报表模板中可以包括多个工作表sheet模板,在基于报表模板生成报表的过程中,可以向报表模板中的一个或者多个工作表模板中导入数据。为了便于区分,本申请实施例中,报表模板中待进行数据导入的工作表模板称为目标工作表模板。
其中,不同目标工作表模板所需导入的数据不同,因此,需要分别确定每个工作表模板中输入导入的数据集。
S202,针对每个目标工作表模板,依据待导入到该目标工作表模板中的数据集所包含的数据个数,确定将该数据集中的所有数据导入到该目标工作表模板所需占据的目标单元格区域。
可以理解的是,根据数据集中包含的数据的行数和列数,以及该目标工作表模板中所具有的行数以及列表,可以确定出如果将该数据集导入到该目标工作表模板所需占据的单元格,并将确定出需要导入数据的各个单元格构成该目标单元格区域。
其中,该目标单元格区域包括至少一个单元格。
举例说明,如,目标工作表模板中单元格的行数为21个,列数为26个,且用于导入数据的区域包括:从第2行到第21行以及从第2列到第26列的区域,而数据集包括90个数据,那么将数据集导入到该目标工作表模板需要占据的目标单元格区域为从第2行中从第2列到第26列的单元格,第3行从第2列到第26列的单元格,第4行从第2列到第26列的数据,以及第5行以及从第2列到第16列所构成的单元格区域。
S203,分别复制每个目标工作表模板,得到每个目标工作表模板对应的工作表副本。
其中,目标工作表模板对应的工作表副本与该目标工作表模板中相同行内的数据相同。
S204,分别将每个目标工作表模板内的数据清空,得到每个目标工作表模板对应的待填充工作表。
S205,将每个待填充工作表以及待填充工作表对应的工作表副本和数据集加载到内存中。
如,可以在内存中构建一个存储空间,例如,基于SXSSF技术的工作簿Workbook,并设置该存储空间中写入数据的预设条数,如果超过写入的数据超过预设条数,则该预设条数的数据存储到硬盘中。
S206,从内存中加载的至少一个待填充工作表中,确定当前待填充的目标待填充工作表,并确定该目标待填充工作表对应的目标工作表副本与目标数据集。
为了便于区分,将当前需要填充或者说导入数据的待填充工作表称为目标待填充工作表,相应的,将该目标待填充工作表对应的工作表副本称为目标工作表副本,将该目标待填充工作表对应的数据集称为目标数据集。
其中,每次可以从内存中选取出一个尚未被填充过的待填充工作表作为目标待填充工作表。
当然,如果采用多个进程并行处理的情况下,那么可以一个进程处理一个目标待填充工作表,从而实现同时对多个待填充工作表进行填充。
S207,基于目标数据集以及目标工作表副本中的数据排列顺序,将目标数据集中的各个数据依次与目标工作表副本中目标单元格区域内的各个单元格内的数据进行拼接。
对于当前选取出的目标待填充工作表所对应的目标数据集以及目标工作表副本而言,基于目标数据集中数据排列顺序,以及目标工作表副本中各行数据排列,依次将目标数据集中的数据与目标工作表副本中的数据进行逐行拼接。
如,从目标工作表副本的目标单元格区域中包含10个单元格,则从目标数据集中选取前10个数据,依次与该目标单元格区域中第一行的10个单元格内的数据进行拼接,得到一行数据;相应的,根据目标单元格中第二行、第三行等以及最后一行中单元格个数,依次从目标数据集中选取待与各行拼接的数据并进行数据拼接。
S208,当拼接得到待导入到该目标待填充工作表的目标单元格区域内一行数据时,将拼接得到的该行数据写入到目标待填充工作表中的目标单元格区域内当前待导入数据的目标行中。
可以理解的是,目标待填充工作表与目标工作表副本中的目标单元格区域中所包含的单元格个数以及单元格排布是相同的,因此,如果将目标工作表副本中的目标单元格区域内的一行数据与目标数据集内相应数据进行了拼接之后,就相当于拼接得到了待导入到该目标待填充工作表的该目标单元格区域内的一行数据。
其中,每拼接得到待导入至目标待填充工作表的目标单元格区域内的一行数据,则将当前拼接得到的一行数据写入到该目标待填充工作表的目标单元格区域内。
可以理解的是,向该目标待填充工作表的目标单元格区域内写入数据时,需要逐行向该目标单元格区域内写入数据,因此,在拼接得到一行数据时,可以确定出当前需要写入数据的行。为了便于区分,将该目标待填充工作表的目标单元格区域内当前待写入数据的行称为目标行。
S209,当该目标待填充工作表中当前写入有数据的行数量达到预设数量,将当前写入数据的预设数量行的数据转移到磁盘中存储。
其中,该预设数量可以根据需要设定,如,该预设数量可以为10,则每当目标待处理工作表中填充了10行数据,则将这10行数据转移到磁盘中存储。
可以理解的是,由于目标待填充工作表中写入的数据基于目标工作表副本与目标数据集中的数据拼接而成,而数据拼接过程中经常会引入其他附加数据,导致拼接后的每行数据量较大,而通过监控该目标待处理工作表中已经填充数据的行的数量,并在填充有数据的行数量超过预设数量时,将该预设数量行填充数据的行中的数据转移到磁盘中,可以有效降低内存中所缓存的数据量,从而可以降低由于内存中数据量过大,而导致的数据溢出情况。
S210,检测该目标待填充工作表的目标单元格区域内的各行是否均完成数据写入,如果是,则执行步骤S211;如果否,则返回执行步骤S209;
如果该目标待处理工作表的目标单元格区域内的各行都已经被填充过,则说明该目标待处理工作表的数据写入过程结束,在该种情况下,可以执行步骤S211,以便对其他待处理工作表进行数据导入;如果该目标待处理工作表数据导入尚未结束,则在数据导入的过程中,仍会继续监控该目标待处理工作表内的数据。
S211,检测内存中是否存在尚未被填充的待填充工作表,如果是,则返回步骤S206;如果否,则执行步骤S212;
S212,删除内存中待填充工作表、工作表副本以及数据集;
其中,当所有待填充工作表均填充完成时,则说明所有数据写入过程完成,且写入有数据的工作表也被转移到磁盘中存储,在该种情况下,可以删除内存中缓存这些表以及数据。
S213,依次拼接磁盘中每个待填充工作表对应的各行数据,将得到的至少一个待填充工作表构成报表。
可以理解的是,在磁盘中,每个待填充工作表中的数据都是分批导入的,这样,就需要针对同一个待填充工作表,将待填充工作表中各个批次导入到磁盘中的各行数据进行拼接,以还原出填充有数据的该待填充工作表。相应的,将填充有数据的各个待填充工作表组合到一起,便可以得到所需生成的报表。
对应本申请一种报表生成方法,本申请还提供了一种报表生成装置。
参见图3,其示出了本申请一种报表生成装置一个实施例的组成结构示意图,本实施例的装置可以包括:
目标确定单元301,用于从用于生成报表的报表模板中,确定出待导入数据的工作表模板以及所述工作表模板中待写入的数据集;
副本创建单元302,用于创建所述工作表模板的工作表副本,其中,所述工作表副本与所述工作表模板中相同行内的数据相同;
表清空单元303,用于清空所述工作表模板中各行内的数据,得到待写入数据的待填充工作表;
数据加载单元304,用于将所述工作表模板对应的所述工作表副本、待填充工作表以及数据集加载到内存中;
拼接写入单元305,用于在所述内存中,将所述数据集中的数据与所述工作表副本中各行的数据进行拼接,并将拼接得到的各行数据依次写入到所述待填充工作表中;
磁盘转移单元306,用于当所述待填充工作表中写入数据的行数量达到预设数量时,将该待填充工作表中当前写入数据的所述预设数量行导入到磁盘中,并删除所述待填充工作表中所述预设数量行;
报表生成单元307,用于当完成向所述待填充工作表的数据写入时,拼接所述磁盘中存储的所述待填充工作表对应的各行,得到所需生成的报表。
在一种可能的实现方式中,该装置还可以包括:
区域确定单元,用于在所述目标确定单元确定出待导入数据的工作表模板以及所述工作表模板中待写入的数据集之后,依据所述数据集所包含的数据个数,确定将该数据集中的所有数据写入到所述工作表模板所需占据的目标单元格区域;
相应的,所述拼接写入单元,包括:
第一拼接写入子单元,用于在所述内存中,将所述数据集中的数据与所述工作表副本中各行的数据进行拼接,将拼接得到的各行数据依次写入到所述待填充工作表的目标单元格区域中。
在一种可能的实现方式中,该装置还可以包括:
内存清空单元,用于当完成向所述待填充工作表的数据写入时,删除所述内存中存储的所述工作表模板对应的工作表副本、待填充工作表以及数据集。
在一种实现方式中,所述数据加载单元,包括:
文件生成子单元,用于将所述工作表模板对应的所述工作表副本、待填充工作表以及数据集加入临时文件;
数据加载子单元,用于将所述临时文件加载到内存中指定的存储空间;
所述拼接写入单元,包括:
第二拼接写入子单元,用于在所述内存中,将所述数据集中的数据与所述工作表副本中各行的数据进行拼接,并将拼接得到的各行数据依次写入到所述临时文件中的所述待填充工作表中。
在一种实现方式中,所述目标确定单元具体为,用于从用于生成报表的报表模板中,确定出待导入数据的至少一个工作表模板以及每个所述工作表模板中待写入的数据集;
所述数据加载单元,具体为,用于将所述至少一个工作表模板各自对应的工作表副本、待填充工作表以及数据集加载到内存中;
所述拼接写入单元,包括:
目标表确定子单元,用于从所述内存中存储的至少一个待填充工作表中,确定当前待填充的目标待填充工作表,并将所述目标待填充工作表对应的数据集中的数据与所述目标待填充工作表对应的工作表副本中的各行数据进行拼接;
数据填充子单元,用于将拼接得到的各行数据依次写入到所述目标待填充工作表中。
所述报表生成装置包括处理器和存储器,上述目标确定单元、副本创建单元、表清空单元、数据加载单元、拼接写入单元、磁盘转移单元和报表生成单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来以减少由于内存不足,而导致报表无法生成的情况。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述报表生成方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述报表生成方法。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:
从用于生成报表的报表模板中,确定出待导入数据的工作表模板以及所述工作表模板中待写入的数据集;
创建所述工作表模板的工作表副本,其中,所述工作表副本与所述工作表模板中相同行内的数据相同;
清空所述工作表模板中各行内的数据,得到待写入数据的待填充工作表;
将所述工作表模板对应的所述工作表副本、待填充工作表以及数据集加载到内存中;
在所述内存中,将所述数据集中的数据与所述工作表副本中各行的数据进行拼接,并将拼接得到的各行数据依次写入到所述待填充工作表中;
当所述待填充工作表中写入数据的行数量达到预设数量时,将该待填充工作表中当前写入数据的所述预设数量行导入到磁盘中,并删除所述待填充工作表中所述预设数量行;
当完成向所述待填充工作表的数据写入时,拼接所述磁盘中存储的所述待填充工作表对应的各行,得到所需生成的报表。
本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:
从用于生成报表的报表模板中,确定出待导入数据的工作表模板以及所述工作表模板中待写入的数据集;
创建所述工作表模板的工作表副本,其中,所述工作表副本与所述工作表模板中相同行内的数据相同;
清空所述工作表模板中各行内的数据,得到待写入数据的待填充工作表;
将所述工作表模板对应的所述工作表副本、待填充工作表以及数据集加载到内存中;
在所述内存中,将所述数据集中的数据与所述工作表副本中各行的数据进行拼接,并将拼接得到的各行数据依次写入到所述待填充工作表中;
当所述待填充工作表中写入数据的行数量达到预设数量时,将该待填充工作表中当前写入数据的所述预设数量行导入到磁盘中,并删除所述待填充工作表中所述预设数量行;
当完成向所述待填充工作表的数据写入时,拼接所述磁盘中存储的所述待填充工作表对应的各行,得到所需生成的报表。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种报表生成方法,其特征在于,包括:
从用于生成报表的报表模板中,确定出待导入数据的工作表模板以及所述工作表模板中待写入的数据集;
创建所述工作表模板的工作表副本,其中,所述工作表副本与所述工作表模板中相同行内的数据相同;
清空所述工作表模板中各行内的数据,得到待写入数据的待填充工作表;
将所述工作表模板对应的所述工作表副本、待填充工作表以及数据集加载到内存中;
在所述内存中,将所述数据集中的数据与所述工作表副本中各行的数据进行拼接,并将拼接得到的各行数据依次写入到所述待填充工作表中;
当所述待填充工作表中写入数据的行数量达到预设数量时,将该待填充工作表中当前写入数据的所述预设数量行导入到磁盘中,并删除所述内存中所述待填充工作表中的所述预设数量行;
当完成向所述待填充工作表的数据写入时,拼接所述磁盘中存储的所述待填充工作表对应的各行,得到所需生成的报表。
2.根据权利要求1所述的报表生成方法,其特征在于,在所述确定出待导入数据的工作表模板以及所述工作表模板中待写入的数据集之后,还包括:
依据所述数据集所包含的数据个数,确定将该数据集中的所有数据写入到所述工作表模板所需占据的目标单元格区域;
所述将拼接得到的各行数据依次写入到所述待填充工作表中,包括:
将拼接得到的各行数据依次写入到所述待填充工作表的目标单元格区域中。
3.根据权利要求1所述的报表生成方法,其特征在于,还包括:
当完成向所述待填充工作表的数据写入时,删除所述内存中存储的所述工作表模板对应的工作表副本、待填充工作表以及数据集。
4.根据权利要求1所述的报表生成方法,其特征在于,所述将所述工作表模板对应的所述工作表副本、待填充工作表以及数据集加载到内存中,包括:
将所述工作表模板对应的所述工作表副本、待填充工作表以及数据集加入临时文件;
将所述临时文件加载到内存中指定的存储空间;
所述将拼接得到的各行数据依次写入到所述待填充工作表中,包括:
将拼接得到的各行数据依次写入到所述临时文件中的所述待填充工作表中。
5.根据权利要求1所述的报表生成方法,其特征在于,所述从用于生成报表的报表模板中,确定出待导入数据的工作表模板以及所述工作表模板中待写入的数据集,包括:
从用于生成报表的报表模板中,确定出待导入数据的至少一个工作表模板以及每个所述工作表模板中待写入的数据集;
所述将所述工作表模板对应的所述工作表副本、待填充工作表以及数据集加载到内存中,包括:
将所述至少一个工作表模板各自对应的工作表副本、待填充工作表以及数据集加载到内存中;
所述在所述内存中,将所述数据集中的数据与所述工作表副本中各行的数据进行拼接,并将拼接得到的各行数据依次写入到所述待填充工作表中,包括:
从所述内存中存储的至少一个待填充工作表中,确定当前待填充的目标待填充工作表,并将所述目标待填充工作表对应的数据集中的数据与所述目标待填充工作表对应的工作表副本中的各行数据进行拼接;
将拼接得到的各行数据依次写入到所述目标待填充工作表中。
6.一种报表生成装置,其特征在于,包括:
目标确定单元,用于从用于生成报表的报表模板中,确定出待导入数据的工作表模板以及所述工作表模板中待写入的数据集;
副本创建单元,用于创建所述工作表模板的工作表副本,其中,所述工作表副本与所述工作表模板中相同行内的数据相同;
表清空单元,用于清空所述工作表模板中各行内的数据,得到待写入数据的待填充工作表;
数据加载单元,用于将所述工作表模板对应的所述工作表副本、待填充工作表以及数据集加载到内存中;
拼接写入单元,用于在所述内存中,将所述数据集中的数据与所述工作表副本中各行的数据进行拼接,并将拼接得到的各行数据依次写入到所述待填充工作表中;
磁盘转移单元,用于当所述待填充工作表中写入数据的行数量达到预设数量时,将该待填充工作表中当前写入数据的所述预设数量行导入到磁盘中,并删除所述待填充工作表中所述预设数量行;
报表生成单元,用于当完成向所述待填充工作表的数据写入时,拼接所述磁盘中存储的所述待填充工作表对应的各行,得到所需生成的报表。
7.根据权利要求6所述的报表生成装置,其特征在于,还包括:
区域确定单元,用于在所述目标确定单元确定出待导入数据的工作表模板以及所述工作表模板中待写入的数据集之后,依据所述数据集所包含的数据个数,确定将该数据集中的所有数据写入到所述工作表模板所需占据的目标单元格区域;
所述拼接写入单元,包括:
第一拼接写入子单元,用于在所述内存中,将所述数据集中的数据与所述工作表副本中各行的数据进行拼接,将拼接得到的各行数据依次写入到所述待填充工作表的目标单元格区域中。
8.根据权利要求6所述的报表生成装置,其特征在于,还包括:
内存清空单元,用于当完成向所述待填充工作表的数据写入时,删除所述内存中存储的所述工作表模板对应的工作表副本、待填充工作表以及数据集。
9.一种存储介质,其特征在于,所述存储介质中存储有程序,所述程序被处理器执行时实现以上权利要求1-5任一项所述报表生成方法。
10.一种处理器,其特征在于,所述处理器用于运行程序,所述程序运行时执行以上权利要求1-5任一项所述报表生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710896569.4A CN109582938B (zh) | 2017-09-28 | 2017-09-28 | 报表生成方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710896569.4A CN109582938B (zh) | 2017-09-28 | 2017-09-28 | 报表生成方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109582938A CN109582938A (zh) | 2019-04-05 |
CN109582938B true CN109582938B (zh) | 2023-01-13 |
Family
ID=65912733
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710896569.4A Active CN109582938B (zh) | 2017-09-28 | 2017-09-28 | 报表生成方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109582938B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113807064A (zh) * | 2021-09-02 | 2021-12-17 | 上汽通用五菱汽车股份有限公司 | 冲压生产数据管理方法、装置、设备及计算机存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101777079A (zh) * | 2010-03-11 | 2010-07-14 | 浙江鸿程计算机系统有限公司 | 一种快速生成电子报表的系统构架及其实现方法 |
CN103034730A (zh) * | 2012-12-21 | 2013-04-10 | 厦门市美亚柏科信息股份有限公司 | 一种基于安卓平台的数据处理方法和系统 |
CN106294301A (zh) * | 2016-08-09 | 2017-01-04 | 广州唯品会信息科技有限公司 | 报表生成方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10157195B1 (en) * | 2007-11-29 | 2018-12-18 | Bdna Corporation | External system integration into automated attribute discovery |
-
2017
- 2017-09-28 CN CN201710896569.4A patent/CN109582938B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101777079A (zh) * | 2010-03-11 | 2010-07-14 | 浙江鸿程计算机系统有限公司 | 一种快速生成电子报表的系统构架及其实现方法 |
CN103034730A (zh) * | 2012-12-21 | 2013-04-10 | 厦门市美亚柏科信息股份有限公司 | 一种基于安卓平台的数据处理方法和系统 |
CN106294301A (zh) * | 2016-08-09 | 2017-01-04 | 广州唯品会信息科技有限公司 | 报表生成方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109582938A (zh) | 2019-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108389118B (zh) | 资产管理系统、方法及装置、电子设备 | |
CN106407207B (zh) | 一种实时新增数据更新方法和装置 | |
US9576019B2 (en) | Increasing distributed database capacity | |
CN108959118B (zh) | 一种数据写入的方法及装置 | |
CN109033365B (zh) | 一种数据处理方法及相关设备 | |
CN106844288B (zh) | 一种随机字符串生成方法及装置 | |
CN106919517B (zh) | 闪存及其访问方法 | |
CN107402950A (zh) | 基于分库分表的文件处理方法和装置 | |
CN109271110A (zh) | 存储系统中存储数据的写入方法、写入系统及相关装置 | |
CN110888922B (zh) | 一种数据同步时目标表的创建方法及装置 | |
CN115599764A (zh) | 一种表格数据的迁移方法、设备及介质 | |
CN110737717A (zh) | 一种数据库迁移方法及装置 | |
CN109582938B (zh) | 报表生成方法和装置 | |
CN114328315A (zh) | 基于dma的数据预处理方法、dma部件及芯片结构 | |
CN112860412A (zh) | 业务数据处理方法、装置、电子设备及存储介质 | |
CN110764930B (zh) | 基于消息模式的请求或应答处理方法及装置 | |
CN109977317B (zh) | 数据查询方法及装置 | |
CN116578410A (zh) | 资源管理方法、装置、计算机设备和存储介质 | |
CN106339183A (zh) | 数据检索的方法及服务器 | |
CN114936010B (zh) | 数据处理方法、装置、设备及介质 | |
CN113986867A (zh) | 一种分布式文件清理方法、装置和系统 | |
CN111435342B (zh) | 海报的更新方法、更新系统以及管理系统 | |
CN113722623A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN114661519A (zh) | 数据备份方法及装置 | |
CN111488194B (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100080 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing Applicant after: BEIJING GRIDSUM TECHNOLOGY Co.,Ltd. Address before: 100086 Beijing city Haidian District Shuangyushu Area No. 76 Zhichun Road cuigongfandian 8 layer A Applicant before: BEIJING GRIDSUM TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |