CN112818655A - 一种基于模板和文件追加写的excel数据处理方法和工具 - Google Patents

一种基于模板和文件追加写的excel数据处理方法和工具 Download PDF

Info

Publication number
CN112818655A
CN112818655A CN202110416916.5A CN202110416916A CN112818655A CN 112818655 A CN112818655 A CN 112818655A CN 202110416916 A CN202110416916 A CN 202110416916A CN 112818655 A CN112818655 A CN 112818655A
Authority
CN
China
Prior art keywords
excel
data
line
template
new
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.)
Granted
Application number
CN202110416916.5A
Other languages
English (en)
Other versions
CN112818655B (zh
Inventor
冉鹏程
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China State Construction eCommerce Co Ltd
Original Assignee
China State Construction eCommerce Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China State Construction eCommerce Co Ltd filed Critical China State Construction eCommerce Co Ltd
Priority to CN202110416916.5A priority Critical patent/CN112818655B/zh
Publication of CN112818655A publication Critical patent/CN112818655A/zh
Application granted granted Critical
Publication of CN112818655B publication Critical patent/CN112818655B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/186Templates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/81Indexing, e.g. XML tags; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/177Editing, e.g. inserting or deleting of tables; using ruled lines
    • G06F40/18Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)

Abstract

本发明提供了一种基于模板和文件追加写的excel数据处理方法和工具,方法包括:获取xml配置、excel模板以及源数据;对xml配置解析获取配置信息;对excel模板解析创建空白的新excel;将excel模板的数据内容逐行导出到新excel,根据配置信息的判断结果对新excel执行数据内容导入后的行进行源数据填充;当内存缓存行数超过阈值时,将数据从内存写到硬盘。本发明通过excel模板和xml配置,推算出需要导出的excel的各行数据、样式,实现文件的追加写,减少内存资源消耗;通过描述数据类型和坐标信息的配置放置到xml,利用xml的特性以及数据结构表现形式,可以实现良好的扩展性和可维护性。

Description

一种基于模板和文件追加写的excel数据处理方法和工具
技术领域
本发明涉及数据处理技术领域,具体而言,涉及一种基于模板和文件追加写的excel数据处理方法和工具。
背景技术
由于excel具有便携的数据存储和强大的数据处理能力,常常作为各类系统的辅助工具,用于数据的存储、加工、转移等。excel数据导出的场景往往随着业务的发展变得越来越复杂,并且随着数据量的增加,excel数据导出的性能及资源消耗等问题,往往成为系统的瓶颈。常见的excel数据导出可以分为5大类:横表(如考勤记录表)、静态竖表(如统计报表)、动态竖表(如包含履历的简历表)、树形表(如行政区域表)和特殊表,其中特殊表是指包含了一些需要定制生成复杂的背景色、字体、合并单元格等样式或内容的表格,很难实现通用性,并且为非常见的表格类型,所以对于通用型excel导出工具,重点主要在于实现前4类表格的导出功能。
excel表格由两大部分组成:内容和样式,在导出内容的同时,往往还需要赋予合理的样式,在导出excel之前,设置样式的最方便的地方就是模板。
然而,现有的方法中存在如下的缺陷:
(1)直接用开源的类库apache POI来创建workbook对象来生成excel文件,以进行excel数据的导出的方法中,可以导出含有excel格式(例如,合并单元格、设置单元格背景颜色等)的excel文件,也就是说,导出后的文件仍然具有上述的excel格式,然而,由于apache POI类库的workbook对象在上述导出方法(例如,在上述导出方法中执行aDDRow()的指令)上消耗内存非常严重,因此,在内存一定的情况下,无法导出含大量数据的excel文件,例如,当服务器JVM的最大堆内存只有1-2G、且待导出的excel文件的列数为50至60时,由于内存的限制导致只能同时导出1万至2万条的excel数据,其中,上述一条数据指的是excel文件中的一行记录的数据。
(2)按照CSV文本格式直接写数据流生成CSV格式文件导出的方法,可以在内存一定的情况下导出的含大量数据的excel文件(例如,当服务器JVM的最大堆内存只有1-2G、且待导出的excel文件的列数为50至60时,可以导出20-40万条的数据),但是,导出后的文件并不具有excel格式(即,不包括合并单元格、设置单元格背景颜色等),这是由于CSV格式是用逗号隔开的文本文档,因此导出的文件只能展示简单的二维数据表格,不支持excel格式(例如合并单元格,设置单元格背景颜色等),只能展示简单的二维数据表格。
(3)阿里开源的easyexcel的方法,easyexcel导出excel的要素包括excel模板a、数据、新excel,将数据的信息(字段名、类型、填充样式等)配置到模板a里,通过解析excel模板并复制一份模板文件b,获取数据的配置信息及需要填充的坐标位置后,将b中的配置信息清除,得到数据填充前的模板框架,再将数据填充到b中,实现数据的导出。但是easyexcel配置的灵活性较差,不能满足枚举、集合等数据类型的导出;且针对复杂类型的excel导出时,需要将所有的数据放置到内存中,资源消耗大,容易造成内存溢出。
针对上述问题,目前尚未提出有效的解决方案;因此,如何实现一个开发效率高、可维护性强、性能良好、使用范围广的通用型excel导出工具是目前急于解决的问题。
发明内容
本发明的目的在于提供一种基于模板和文件追加写的excel数据处理方法和工具,以解决相关技术中无法导出大量数据的excel文件、且导出后的数据不支持excel格式以及配置灵活性差的问题。
本发明的实施例通过以下技术方案实现:一种基于模板和文件追加写的excel数据处理方法,包括:
A、获取文件,所述文件包括xml配置、excel模板以及源数据,所述xml配置保存有配置信息,所述配置信息包括所述源数据的内容属性以及样式属性;
B、对所述xml配置进行解析,获取所述配置信息;
C、对所述excel模板进行解析,创建空白的新excel;
D、将所述excel模板中的数据内容逐行导出到所述新excel,并根据所述配置信息的判断结果对所述新excel执行数据内容导入后的行进行源数据填充;其中,
填充所述新excel的过程中,数据均存放在内存,当所述内存缓存行数超过阈值时,将已缓存的数据从内存写到硬盘。
进一步的,步骤D具体包括:
D1、从所述excel模板的第一行开始,将所述excel模板的数据内容导出到所述新excel;
D2、通过所述配置信息判断所述新excel中执行数据内容导入后的行是否有数据需要填充,若是,则根据所述配置信息填充源数据;
若否,则将所述excel模板的下一行导出到所述新excel;
D3、当内存缓存的行数达到x行后,将缓存的数据从内存写到硬盘,x行为基于内存的大小确定。
根据一种优选实施方式,所述内容属性以及样式属性为以下至少之一:字段名、填充坐标、数据类型、格式。
根据一种优选实施方式,所述数据内容为以下至少之一:行高、列宽、合并单元格、颜色、字体。
进一步的,步骤D2进一步包括:
D21、获取变量,所述变量包括:excel模板的行标a、xml配置的最小数据行标b以及新excel的行标n,其中,所述an初始值均为0;
D22、判断ab值的大小,若a等于b,进一步判断在xml配置中b行是否为动态行;
b行为动态行,根据xml的配置信息,从第n行开始,将源数据填充到新excel,将b的值重新定义为xml配置的下一行行标,n的值加上源数据填充的行数进行累加,根据bn重新定义的值重新执行判断ab是否相等的步骤;
b行非动态行,将excel模板的第a行复制到新excel的第n行;
D23、判断a是否等于b
a等于b,将a加1后重新执行步骤D22;
a不等于b,将na分别加1后重新执行步骤D22;
D24、当a大于b时,根据xml的配置信息,从第n行开始,将源数据填充到新excel,将b的值重新定义为xml配置的下一行行标,n的值加上源数据填充的行数进行累加,根据bn重新定义的值重新执行判断ab是否相等的步骤;
a小于b时,将excel模板的第a行复制到新excel的第n行,继续执行步骤D23;
其中,在步骤D22中,判断xml配置中b行为动态行之后还包括步骤D221,步骤D221具体包括:
判断excel模板的第a行是否有内容,若a行有内容,将源数据填充到新excel,a的值不变继续执行步骤D22;
a行无内容,将源数据以及a行对应列的样式填充在新excel,n的值加上源数据填充的行数进行累加后继续执行步骤D22。
本发明还提供一种基于模板和文件追加写的excel数据处理工具,应用到如上述所述的基于模板和文件追加写的excel数据处理方法,包括:
文件获取单元,用以获取文件,所述文件包括xml配置、excel模板以及源数据,所述xml配置保存有配置信息,所述配置信息包括所述源数据的内容属性以及样式属性;
解析单元,用以对所述xml配置进行解析,获取所述配置信息;以及用以对所述excel模板进行解析,创建空白的新excel;
数据导出单元,用以将所述excel模板中的数据内容逐行导出到所述新excel,并根据所述配置信息的判断结果对所述新excel执行数据内容导入后的行进行源数据填充;其中,
填充所述新excel的过程中,数据均存放在内存,当所述内存缓存行数超过阈值时,将已缓存的数据从内存写到硬盘。
进一步的,所述数据导出单元包括:
导出模块,用以从所述excel模板的第一行开始,将所述excel模板的数据内容导出到所述新excel;
判断模块,用以通过所述配置信息判断所述新excel中执行数据内容导入后的行是否有数据需要填充,若是,则根据所述配置信息填充源数据;若否,则将所述excel模板的下一行导出到所述新excel;
内存管理模块,用以当内存缓存的行数达到x行后,将缓存的数据从内存写到硬盘,所述x为基于内存的大小确定。
根据一种优选实施方式,所述内容属性以及样式属性为以下至少之一:字段名、填充坐标、数据类型、格式。
根据一种优选实施方式,所述数据内容为以下至少之一:行高、列宽、合并单元格、颜色、字体。
进一步的,所述判断模块包括:
变量获取子模块,用以获取变量,所述变量包括:excel模板的行标a、xml配置的最小数据行标b以及新excel的行标n,其中,所述an初始值均为0;
第一判断子模块,判断ab值的大小,若a等于b,进一步判断在所述xml配置中b行是否为动态行;
b行为动态行,根据xml的配置信息,从第n行开始,将源数据填充到新excel,将b的值重新定义为xml配置的下一行行标,n的值加上源数据填充的行数进行累加,继续通过第一判断子模块对重新定义后的bn进行判断;
b行非动态行,将excel模板的第a行复制到新excel的第n行,通过第二判断子模块进行判断;
第二判断子模块,用以判断a是否等于b
a等于b,将a加1后继续通过第一判断子模块进行判断;
a不等于b,将na分别加1后继续通过第一判断子模块进行判断;
第三判断子模块,用以当第一判断子模块判断出a不等于b,且a大于b时,根据xml的配置信息,从第n行开始,将源数据填充到新excel,将b的值重新定义为xml配置的下一行行标,n的值加上源数据填充的行数进行累加,继续通过第一判断子模块对重新定义后的bn进行判断;
a小于b时,将excel模板的第a行复制到新excel的第n行,继续通过第二判断子模块进行判断;
其中,所述第一判断子模块判断xml配置中b行为动态行之后还包括:
判断excel模板第a行是否有内容,若a行有内容,将源数据填充到新excel,n的值加上源数据填充的行数进行累加,a的值不变继续通过第一判断子模块进行判断;
a行无内容,将源数据以及a行对应列的样式填充在新excel,n的值加上源数据填充的行数进行累加后继续通过第一判断子模块进行判断。
本发明实施例的技术方案至少具有如下优点和有益效果:本发明通过excel模板和xml配置,直接推算出需要导出的excel的每一行数据、样式,可以实现文件的追加写,从而减少内存的资源消耗;且本发明通过描述数据类型和坐标信息的配置,放置到xml中,利用xml顺序解析的特性以及丰富的数据结构表现形式,可以实现良好的扩展性和可维护性。
附图说明
图1为本发明实施例1提供的基于模板和文件追加写的excel数据处理方法的逻辑流程图;
图2为本发明实施例1提供的基于模板和文件追加写的excel数据处理方法的数据导出逻辑流程图;
图3为本发明实施例2提供的基于模板和文件追加写的excel数据处理工具的结构框图;
图4为本发明实施例2提供的基于模板和文件追加写的excel数据处理工具的数据导出单元的结构框图;
图5为本发明实施例2提供的基于模板和文件追加写的excel数据处理工具的判断模块的结构框图;
图标:100-文件获取单元,200-解析单元,300-数据导出单元,301-导出模块,302-判断模块,3021-变量获取子模块,3022-第一判断子模块,3023-第二判断子模块,3024-第三判断子模块,303-内存管理模块。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
实施例1
参阅图1所示,本实施例提供一种基于模板和文件追加写的excel数据处理方法,包括以下几个步骤:
1)获取文件,所述文件包括xml配置、excel模板以及源数据,所述xml配置保存有配置信息,所述配置信息包括所述源数据的内容属性以及样式属性。需要说明的是,在本实施例中,所述内容属性以及样式属性为以下至少之一:字段名、填充坐标、数据类型、格式。
2)对所述xml配置进行解析,获取所述配置信息。对所述excel模板进行解析,创建空白的新excel。具体的,所述数据内容为以下至少之一:行高、列宽、合并单元格、颜色、字体。
可以理解的是,在本实施例中,通过xml配置提供需要填充数据的字段名、填充坐标、数据类型、格式等;通过excel模板提供框架和基础样式。
3)将所述excel模板中的数据内容逐行导出到所述新excel;例如,从所述excel模板的第一行开始,将所述excel模板的数据内容复制到所述新excel。
通过所述配置信息判断所述新excel中执行数据内容导入后的行是否有数据需要填充;若是,则根据所述配置信息填充源数据;若否,则将所述excel模板的下一行导出到所述新excel。
以下结合图2对步骤3)进行举例说明:
第一步,获取变量,所述变量包括:excel模板的行标a、xml配置的最小数据行标b以及新Excel的行标n,所述an初始值均为0;
需要说明的是,解析xml配置后,会将所有配置通过坐标位置排序,按行号正序,行号小的在前,其次列号小的在前;由于本实施例是逐行导出,所以b的初始值取xml配置的第一行;
第二步、判断ab值的大小,若a等于b,进一步判断在xml配置中b行是否为动态行;
b行为动态行,则根据xml的配置信息,从第n行开始,将源数据填充到新excel,进一步的将b的值重新定义为xml配置的下一行行标,n的值加上源数据填充的行数进行累加;其中,若xml配置中无下一行,则b等于-1;
a的值等于-1,且b的值等于-1,则流程结束;
否则,根据bn重新定义的值重新执行第二步;
b行非动态行,则将excel模板的第a行复制到新excel的第n行;
a的值等于-1,且b的值等于-1,流程结束;
否则,执行第三步、判断a是否等于b
a等于b,将a加1后重新执行第二步;其中,若a大于excel模板的最大行标,则a=-1;
a不等于b,将na分别加1后重新执行第二步,其中,若a大于excel模板的最大行标,则a=-1;
第四步、需要说明的是,为了方便对整个流程进行说明,此处的第四步在第二步中a不等于b时执行;
a大于b时,根据xml的配置信息,从第n行开始,将源数据填充到新excel,进一步的将b的值重新定义为xml配置的下一行行标,n的值加上源数据填充的行数进行累加,其中,若xml配置中无下一行,则b等于-1;
a的值等于-1,且b的值等于-1,流程结束。
否则,根据bn重新定义的值重新执行第二步;
a小于b时,将excel模板的第a行复制到新excel的第n行;
a的值等于-1,且b的值等于-1,则流程结束;
否则,继续执行第三步;
其中,在第二步中,判断xml配置中b行为动态行之后还包括步骤:
判断excel模板第a行是否有内容,若a行有内容,将源数据填充到新excel,n的值加上源数据填充的行数进行累加,a的值不变继续执行第二步;
a行无内容,将源数据以及a行对应列的样式填充在新excel,n的值加上源数据填充的行数进行累加后继续执行第二步。
循环上述步骤,对新excel进行逐行填充;其中,填充所述新excel的过程中,数据均存放在内存;为了避免数据导出过程中出现内存溢出,当内存缓存的行数达到x行后,将缓存的数据从内存写到硬盘,所述x为基于内存的大小确定。
实施例2
参阅图3至图5所示,本实施例提供一种基于模板和文件追加写的excel数据处理工具,应用到如实施例1所述的基于模板和文件追加写的excel数据处理方法,该工具包括以下几个部件:
1)文件获取单元100,用以获取文件,所述文件包括xml配置、excel模板以及源数据,所述xml配置保存有配置信息,所述配置信息包括所述源数据的内容属性以及样式属性。
2)解析单元200,用以对所述xml配置进行解析,获取所述配置信息;以及用以对所述excel模板进行解析,创建空白的新excel。
3)数据导出单元300,用以将所述excel模板中的数据内容逐行导出到所述新excel,并根据所述配置信息的判断结果对所述新excel执行数据内容导入后的行进行源数据填充;其中,
填充所述新excel的过程中,数据均存放在内存,当所述内存缓存行数超过阈值时,将已缓存的数据从内存写到硬盘。
进一步的,所述数据导出单元300包括:
导出模块301,用以从所述excel模板的第一行开始,将所述excel模板的数据内容导出到所述新excel;
判断模块302,用以通过所述配置信息判断所述新excel中执行数据内容导入后的行是否有数据需要填充,若是,则根据所述配置信息填充源数据;若否,则将所述excel模板的下一行导出到所述新excel;
内存管理模块303,用以当内存缓存的行数达到x行后,将缓存的数据从内存写到硬盘,所述x为基于内存的大小确定。
具体的,所述内容属性以及样式属性为以下至少之一:字段名、填充坐标、数据类型、格式。
具体的,所述数据内容为以下至少之一:行高、列宽、合并单元格、颜色、字体。
具体的,所述判断模块302包括:
变量获取子模块3021,用以获取变量,所述变量包括:excel模板的行标a、xml配置的最小数据行标b以及新Excel的行标n,其中,所述an初始值均为0;
第一判断子模块3022,判断ab值的大小,若a等于b,进一步判断在所述xml配置中b行是否为动态行;
b行为动态行,根据xml的配置信息,从第n行开始,将源数据填充到新excel,将b的值重新定义为xml配置的下一行行标,n的值加上源数据填充的行数进行累加,其中,xml配置中无下一行,则b等于-1;
a的值等于-1,且b的值等于-1,流程结束;
否则,继续通过第一判断子模块3022对重新定义后的bn进行判断;
a行非动态行,将excel模板的第a行复制到新excel的第n行,通过第二判断子模块3023进行判断;
其中,当a的值等于-1,且b的值等于-1,流程结束;
否则,通过第二判断子模块3023判断a是否等于b
a等于b,将a加1后继续通过第一判断子模块3022进行判断,其中,若a大于excel模板的最大行标,则a=-1;
a不等于b,将na分别加1后继续通过第一判断子模块3022进行判断,其中,若a大于excel模板的最大行标,则a=-1;
第三判断子模块3024,需要说明的是,为了方便对整个流程进行说明,此处的第三判断子模块3024在第一判断子模块3022得出a不等于b时执行;
a大于b时,根据xml的配置信息,从第n行开始,将源数据填充到新excel,将b的值重新定义为xml配置的下一行行标,n的值加上源数据填充的行数进行累加,其中,xml配置中无下一行,则b等于-1;
a的值等于-1,且b的值等于-1,流程结束;
否则,继续通过第一判断子模块3022对重新定义后的bn进行判断;
a小于b时,将excel模板的第a行复制到新excel的第n行,
a的值等于-1,且b的值等于-1,流程结束;
否则,继续通过第二判断子模块3023进行判断;
其中,所述第一判断子模块3022判断xml配置中b行为动态行之后还包括:
判断excel模板第a行是否有内容,若a行有内容,将源数据填充到新excel,n的值加上源数据填充的行数进行累加,a的值不变继续通过第二判断子模块3023进行判断;
a行无内容,将源数据以及a行对应列的样式填充在新excel,n的值加上源数据填充的行数进行累加后继续通过第一判断子模块3022进行判断。
综上所述,本发明通过excel模板和xml配置,直接推算出需要导出的excel的每一行数据、样式,可以实现文件的追加写,从而减少内存的资源消耗;且本发明通过描述数据类型和坐标信息的配置,放置到xml中,利用xml顺序解析的特性以及丰富的数据结构表现形式,可以实现良好的扩展性和可维护性。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于模板和文件追加写的excel数据处理方法,其特征在于,包括:
A、获取文件,所述文件包括xml配置、excel模板以及源数据,所述xml配置保存有配置信息,所述配置信息包括所述源数据的内容属性以及样式属性;
B、对所述xml配置进行解析,获取所述配置信息;
C、对所述excel模板进行解析,创建空白的新excel;
D、将所述excel模板中的数据内容逐行导出到所述新excel,并根据所述配置信息的判断结果对所述新excel执行数据内容导入后的行进行源数据填充;其中,
填充所述新excel的过程中,数据均存放在内存,当所述内存缓存行数超过阈值时,将已缓存的数据从内存写到硬盘。
2.如权利要求1所述的基于模板和文件追加写的excel数据处理方法,其特征在于,
步骤D具体包括:
D1、从所述excel模板的第一行开始,将所述excel模板的数据内容导出到所述新excel;
D2、通过所述配置信息判断所述新excel中执行数据内容导入后的行是否有数据需要填充,若是,则根据所述配置信息填充源数据;
若否,则将所述excel模板的下一行导出到所述新excel;
D3、当内存缓存的行数达到x行后,将缓存的数据从内存写到硬盘,x行为基于内存的大小确定。
3.如权利要求2所述的基于模板和文件追加写的excel数据处理方法,其特征在于,
所述内容属性以及样式属性为以下至少之一:字段名、填充坐标、数据类型、格式。
4.如权利要求2所述的基于模板和文件追加写的excel数据处理方法,其特征在于,
所述数据内容为以下至少之一:行高、列宽、合并单元格、颜色、字体。
5.如权利要求2所述的基于模板和文件追加写的excel数据处理方法,其特征在于,
步骤D2进一步包括:
D21、获取变量,所述变量包括:excel模板的行标a、xml配置的最小数据行标b以及新excel的行标n,其中,所述an初始值均为0;
D22、判断ab值的大小,若a等于b,进一步判断在所述xml配置中b行是否为动态行;
b行为动态行,根据xml的配置信息,从第n行开始,将源数据填充到新excel,将b的值重新定义为xml配置的下一行行标,n的值加上源数据填充的行数进行累加,根据bn重新定义的值重新执行判断ab是否相等的步骤;
b行非动态行,将excel模板的第a行复制到新excel的第n行;
D23、判断a是否等于b
a等于b,将a加1后重新执行步骤D22;
a不等于b,将na分别加1后重新执行步骤D22;
D24、当a大于b时,根据xml的配置信息,从第n行开始,将源数据填充到新excel,将b的值重新定义为xml配置的下一行行标,n的值加上源数据填充的行数进行累加,根据bn重新定义的值重新执行判断ab是否相等的步骤;
a小于b时,将excel模板的第a行复制到新excel的第n行,继续执行步骤D23;
其中,在步骤D22中,判断xml配置中b行为动态行之后还包括步骤D221,步骤D221具体包括:
判断excel模板的第a行是否有内容,若a行有内容,将源数据填充到新excel,n的值加上源数据填充的行数进行累加,a的值不变继续执行步骤D22;
a行无内容,将源数据以及a行对应列的样式填充在新excel,n的值加上源数据填充的行数进行累加后继续执行步骤D22。
6.一种基于模板和文件追加写的excel数据处理工具,应用到如权利要求1-5任一项所述的基于模板和文件追加写的excel数据处理方法,其特征在于,包括:
文件获取单元(100),用以获取文件,所述文件包括xml配置、excel模板以及源数据,所述xml配置保存有配置信息,所述配置信息包括所述源数据的内容属性以及样式属性;
解析单元(200),用以对所述xml配置进行解析,获取所述配置信息;以及用以对所述excel模板进行解析,创建空白的新excel;
数据导出单元(300),用以将所述excel模板中的数据内容逐行导出到所述新excel,并根据所述配置信息的判断结果对所述新excel执行数据内容导入后的行进行源数据填充;其中,
填充所述新excel的过程中,数据均存放在内存,当所述内存缓存行数超过阈值时,将已缓存的数据从内存写到硬盘。
7.如权利要求6所述的基于模板和文件追加写的excel数据处理工具,其特征在于,所述数据导出单元(300)包括:
导出模块(301),用以从所述excel模板的第一行开始,将所述excel模板的数据内容导出到所述新excel;
判断模块(302),用以通过所述配置信息判断所述新excel中执行数据内容导入后的行是否有数据需要填充,若是,则根据所述配置信息填充源数据;若否,则将所述excel模板的下一行导出到所述新excel;
内存管理模块(303),用以当内存缓存的行数达到x行后,将缓存的数据从内存写到硬盘,所述x为基于内存的大小确定。
8.如权利要求7所述的基于模板和文件追加写的excel数据处理工具,其特征在于,
所述内容属性以及样式属性为以下至少之一:字段名、填充坐标、数据类型、格式。
9.如权利要求7所述的基于模板和文件追加写的excel数据处理工具,其特征在于,
所述数据内容为以下至少之一:行高、列宽、合并单元格、颜色、字体。
10.如权利要求7所述的基于模板和文件追加写的excel数据处理工具,其特征在于,
所述判断模块(302)包括:
变量获取子模块(3021),用以获取变量,所述变量包括:excel模板的行标a、xml配置的最小数据行标b以及新excel的行标n,其中,所述an初始值均为0;
第一判断子模块(3022),判断ab值的大小,若a等于b,进一步判断在所述xml配置中b行是否为动态行;
b行为动态行,根据xml的配置信息,从第n行开始,将源数据填充到新excel,将b的值重新定义为xml配置的下一行行标,n的值加上源数据填充的行数进行累加,继续通过第一判断子模块(3022)对重新定义后的bn进行判断;
b行非动态行,将excel模板的第a行复制到新excel的第n行,通过第二判断子模块(3023)进行判断;
第二判断子模块(3023),用以判断a是否等于b
a等于b,将a加1后继续通过第一判断子模块(3022)进行判断;
a不等于b,将na分别加1后继续通过第一判断子模块(3022)进行判断;
第三判断子模块(3024),用以当第一判断子模块(3022)判断出a不等于b,且a大于b时,根据xml的配置信息,从第n行开始,将源数据填充到新excel,将b的值重新定义为xml配置的下一行行标,n的值加上源数据填充的行数进行累加,继续通过第一判断子模块(3022)对重新定义后的bn进行判断;
a小于b时,将excel模板的第a行复制到新excel的第n行,继续通过第二判断子模块(3023)进行判断;
其中,所述第一判断子模块(3022)判断xml配置中b行为动态行之后还包括:
判断excel模板第a行是否有内容,若a行有内容,将源数据填充到新excel,n的值加上源数据填充的行数进行累加,a的值不变继续通过第一判断子模块(3022)进行判断;
a行无内容,将源数据以及a行对应列的样式填充在新excel,n的值加上源数据填充的行数进行累加后继续通过第一判断子模块(3022)进行判断。
CN202110416916.5A 2021-04-19 2021-04-19 一种基于模板和文件追加写的excel数据处理方法和工具 Active CN112818655B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110416916.5A CN112818655B (zh) 2021-04-19 2021-04-19 一种基于模板和文件追加写的excel数据处理方法和工具

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110416916.5A CN112818655B (zh) 2021-04-19 2021-04-19 一种基于模板和文件追加写的excel数据处理方法和工具

Publications (2)

Publication Number Publication Date
CN112818655A true CN112818655A (zh) 2021-05-18
CN112818655B CN112818655B (zh) 2021-08-03

Family

ID=75863684

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110416916.5A Active CN112818655B (zh) 2021-04-19 2021-04-19 一种基于模板和文件追加写的excel数据处理方法和工具

Country Status (1)

Country Link
CN (1) CN112818655B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114218913A (zh) * 2021-12-15 2022-03-22 武汉众邦银行股份有限公司 一种大数据Excel参数化配置导出方法
CN114911754A (zh) * 2022-05-31 2022-08-16 成都奇烽岩土科技有限责任公司 一种注浆机的数据传输控制方法和系统

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120099158A1 (en) * 2010-10-25 2012-04-26 Konica Minolta Business Technologies, Inc. Data processing device and data processing method
CN105045775A (zh) * 2015-08-12 2015-11-11 深圳联友科技有限公司 一种指定格式的Excel文档生成方法及装置
CN105589840A (zh) * 2015-12-15 2016-05-18 重庆腾帆科技有限公司 一种通用excel/pdf报表导出组件
CN108038095A (zh) * 2017-12-15 2018-05-15 四川汉科计算机信息技术有限公司 一种文档自动生成方法
CN108959230A (zh) * 2018-07-24 2018-12-07 郑州云海信息技术有限公司 一种生成报表模板的方法和装置
CN109255114A (zh) * 2018-09-17 2019-01-22 四川长虹电器股份有限公司 基于数据配置生成Excel表格和图例的系统及方法
CN109298858A (zh) * 2018-10-25 2019-02-01 北京航天时代激光导航技术有限责任公司 一种基于Qt资源文件的Excel文档生成方法及系统
CN109388612A (zh) * 2018-09-14 2019-02-26 中国科学院光电研究院 一种数据汇总文档生成的方法、设备、系统及介质
CN110119978A (zh) * 2019-05-10 2019-08-13 海闻科技有限公司 一种税务申报模块的提取方法
CN110633462A (zh) * 2019-09-11 2019-12-31 四川长虹电器股份有限公司 一种Excel二维表格导入的方法
CN111581934A (zh) * 2020-04-21 2020-08-25 云南昆钢电子信息科技有限公司 一种基于XML和Excel的标牌打印方法及系统

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120099158A1 (en) * 2010-10-25 2012-04-26 Konica Minolta Business Technologies, Inc. Data processing device and data processing method
CN105045775A (zh) * 2015-08-12 2015-11-11 深圳联友科技有限公司 一种指定格式的Excel文档生成方法及装置
CN105589840A (zh) * 2015-12-15 2016-05-18 重庆腾帆科技有限公司 一种通用excel/pdf报表导出组件
CN108038095A (zh) * 2017-12-15 2018-05-15 四川汉科计算机信息技术有限公司 一种文档自动生成方法
CN108959230A (zh) * 2018-07-24 2018-12-07 郑州云海信息技术有限公司 一种生成报表模板的方法和装置
CN109388612A (zh) * 2018-09-14 2019-02-26 中国科学院光电研究院 一种数据汇总文档生成的方法、设备、系统及介质
CN109255114A (zh) * 2018-09-17 2019-01-22 四川长虹电器股份有限公司 基于数据配置生成Excel表格和图例的系统及方法
CN109298858A (zh) * 2018-10-25 2019-02-01 北京航天时代激光导航技术有限责任公司 一种基于Qt资源文件的Excel文档生成方法及系统
CN110119978A (zh) * 2019-05-10 2019-08-13 海闻科技有限公司 一种税务申报模块的提取方法
CN110633462A (zh) * 2019-09-11 2019-12-31 四川长虹电器股份有限公司 一种Excel二维表格导入的方法
CN111581934A (zh) * 2020-04-21 2020-08-25 云南昆钢电子信息科技有限公司 一种基于XML和Excel的标牌打印方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ALIBABA: "填充Excel", 《HTTPS://WWW.YUQUE.COM/EASYEXCEL/DOC》 *
NICOLAS: "How to export data to an Excel file using a template with Openxml", 《HTTPS://LABS.SUPINFOCHINA.COM/EN/HOW-TO-EXPORT-DATA-TO-AN-EXCEL-FILE-USING-A-TEMPLATE-WITH-OPENXML/》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114218913A (zh) * 2021-12-15 2022-03-22 武汉众邦银行股份有限公司 一种大数据Excel参数化配置导出方法
CN114911754A (zh) * 2022-05-31 2022-08-16 成都奇烽岩土科技有限责任公司 一种注浆机的数据传输控制方法和系统

Also Published As

Publication number Publication date
CN112818655B (zh) 2021-08-03

Similar Documents

Publication Publication Date Title
CN107506343B (zh) 一种信息编辑的处理方法及装置
CN112818655B (zh) 一种基于模板和文件追加写的excel数据处理方法和工具
CN110516221B (zh) 提取pdf文档中图表数据的方法、设备和存储介质
US20070136660A1 (en) Creation of semantic objects for providing logical structure to markup language representations of documents
CN103279455B (zh) 电子表格的样式处理方法和装置
US20150032708A1 (en) Database analysis apparatus and method
CN111126019B (zh) 基于模式定制的报表生成方法、装置和电子设备
CN105045775A (zh) 一种指定格式的Excel文档生成方法及装置
CN112668289A (zh) 一种嵌套表格的提取方法及装置、存储介质
US20130181995A1 (en) Handwritten character font library
CN113609820A (zh) 基于可扩展标记语言文件生成word文件的方法、装置及设备
JP2021103552A (ja) 構造化文書情報の標識方法、構造化文書情報の標識装置、電子機器、コンピュータ可読記憶媒体及びコンピュータプログラム
CN116644729A (zh) 表格文件处理方法、装置、计算机设备和存储介质
CN114816404A (zh) 动态渲染视图页面的方法、装置、计算机设备及存储介质
EP0585332A1 (en) METHOD AND APPARATUS FOR AUTOMATIC LAYOUT OF TEXT AND GRAPHICS.
US10031894B2 (en) Method and apparatus of building intermediate character library
CN108766513A (zh) 一种智慧健康医疗数据结构化处理系统
CN108647337B (zh) 一种仿真分析数据的格式处理方法及装置
CN117078181A (zh) 一种电力交易业务数据处理流程自动化方法与系统
CN112416340A (zh) 基于草图的网页生成方法和系统
CN116501742A (zh) 一种简单灵活的表格数据采集输出方法、介质及系统
CN111222310A (zh) 一种不规则表单的录入和展示的方法及系统
CN109426458B (zh) 一种关系图的打印方法和装置
CN116110065A (zh) 题卡数据生成方法、装置、计算机设备和存储介质
CN114118026B (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
GR01 Patent grant
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20210518

Assignee: Yunzhu Information Technology (Chengdu) Co.,Ltd.

Assignor: China Construction e-commerce Co.,Ltd.

Contract record no.: X2023980032450

Denomination of invention: An excel data processing method and tool based on template and file appending

Granted publication date: 20210803

License type: Common License

Record date: 20230220

EE01 Entry into force of recordation of patent licensing contract