CN110633462A - 一种Excel二维表格导入的方法 - Google Patents
一种Excel二维表格导入的方法 Download PDFInfo
- Publication number
- CN110633462A CN110633462A CN201910859362.9A CN201910859362A CN110633462A CN 110633462 A CN110633462 A CN 110633462A CN 201910859362 A CN201910859362 A CN 201910859362A CN 110633462 A CN110633462 A CN 110633462A
- Authority
- CN
- China
- Prior art keywords
- excel
- data
- import
- class
- importing
- 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
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000008676 import Effects 0.000 claims abstract description 55
- 238000012545 processing Methods 0.000 claims description 17
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 4
- 244000046052 Phaseolus vulgaris Species 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241000282836 Camelus dromedarius Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种Excel二维表格导入的方法,包括:A.编写excel导入入口类,excel导入入口类中设有导入的模块名称;B.在进行数据导入前先判断当前数据所在excel的模块名称是否为设定的模块名称,若是则进入步骤C,否则,采用常规excel导入方法实现数据导入,C.调用与所述模块名称对应的导入方法实现数据导入,本发明的Excel二维表格导入的方法在程序启动的时候就通过注解扫描方式直接把基础调用方法和个别调用方法一次性读入系统,方便了开发者的开发,直接根据模块名就能调用其隐藏背后的方法,具有耗用内存小且能多模块自动切换导入的优点。
Description
技术领域
本发明涉及Excel二维表格导入技术领域,特别涉及一种Excel二维表格导入的方法。
背景技术
应用系统中,经常会用到导入excel表格数据存储到服务器数据库表中的操作。在导入的过程中,会遇到内存崩溃的问题,遇到多模块的导入,如何实施智能识别导入。如何简化导入。这些都是开发人员非常关心的问题。大家应用较多的导入excel技术是Apachepoi。Poi有一个严重问题,在遇到导入的数据量大的时候,因为它是整体读入文件内容到内存,所以非常耗用内存。而采用开源的easyexcel,就不会产生这种异常情况,因为它是一行读入就解析一行的优化措施,能有效控制内存高耗用的可怕情形。
企业应用过程中导入的excel会有多个。一般的做法是导入一次excel写一个具体的导入过程;导入多个写多个不同的具体个性化过入过程。这种做法虽然对单个业务是很精准的,但是从整体全局来看,造成了代码冗余,不够优雅。
发明内容
本发明的目的是克服上述背景技术中不足,提供一种Excel二维表格导入的方法,采用当前流行的java开发框架SpringBoot2.0,在程序启动的时候就通过注解扫描方式直接把基础调用方法和个别调用方法一次性读入系统,方便了开发者的开发,直接根据模块名就能调用其隐藏背后的方法,具有耗用内存小且能多模块自动切换导入的优点。
为了达到上述的技术效果,本发明采取以下技术方案:
一种Excel二维表格导入的方法,包括以下步骤:
A.编写excel导入入口类,所述excel导入入口类中设有导入的模块名称,且一个模块名称代表一个业务类;
B.在进行数据导入前先判断当前数据所在excel的模块名称是否为设定的模块名称,若是则进入步骤C,否则,采用常规excel导入方法实现数据导入;具体为当没有输入模块名称或输入的模块名称对应的具体导入方法不存在时,即只调用基础通用excel导入方法,仅在模块名称为设定的模块名称时,在调用对应的具体导入方法,可实现用一条引用命令去调用公用方法,减少了共同代码的使用量,使得代码容易修改且阅读清晰;
C.调用与所述模块名称对应的导入方法实现数据导入,包括:
C1.调用对应的监听器,在扫描解析完一行excel数据即往list表添加一行对象数据,并判断当前是否已到excel最后一行数据,若是,则进入步骤C2,否则,进入步骤C3,具体的,本方法中是采用开源的easyexcel后台逐行扫描并读取内容;
C2.将list表中所有数据全部插入目标数据表,完成此次数据导入;
C3.判定当前list表中的对象数据是否达到n行,若未达到则继续扫描下一行excel数据返回步骤C1,否则,进入步骤C4;
C4.将当前list表中所有数据全部插入目标数据表,并清空list表,再继续扫描下一行excel数据返回步骤C1;
本方法中采用的是逐行扫描的方法,其优点为可使得内存使用的增长得到有效控制,且能对每行excel数据进行特殊化的业务处理,当扫描积累到一定行数的时候,进行插入数据表的操作。
进一步地,n的取值为一千,根据实践操作,积累到一千行的时候,插入数据表比较合适,既不会占用内存大,也不影响执行时间,如果一直解析,一直把行对象放入list表(list表中数据超过一千行仍继续缓存),那同样会与现有技术中采用Poi技术一样会造成内存耗用大的问题,如果一条excel解析完就插入数据表或少于一千行就插入数据表,会出现cpu占用高,虽然内存占用小了,但是时间耗用多了。
进一步地,所述excel导入入口类中还设有导入日期设置项。
进一步地,所述模块名称采用英文驼峰命名法。
进一步地,在所述步骤A中还包括编写excel处理实现类,所述excel处理实现类包括基本实现类和特殊实现类,所述特殊实现类对应具有特殊需求的业务模块,基本实现类中能完成绝大多数一般化的excel处理内容,特殊实现类则对应有特殊需求的业务模块,且特殊实现类可在基本实现类的基础上进行编写。
进一步地,所述导入方法编写在与模块名称对应的excel处理实现类中。
本发明与现有技术相比,具有以下的有益效果:
本发明的Excel二维表格导入的方法,利用了easyexcel基础技术,解决了excel导入的复杂性问题,同时,采用当前流行的java开发框架SpringBoot2.0,在程序启动的时候就通过注解扫描方式直接把基础调用方法和个别调用方法一次性读入系统,方便了开发者的开发,并通过统一写一个导入excel的集中处理模块可直接根据模块名就能调用其隐藏背后的方法,且模块名在配置文件中方便更改,可消除重复代码,并进一步对不同的模块文件按需进行事前处理、事后处理,具有耗用内存小且能多模块自动切换导入的优点。
附图说明
图1是本发明的Excel二维表格导入的方法的流程示意图。
具体实施方式
下面结合本发明的实施例对本发明作进一步的阐述和说明。
实施例:
实施例一:
如图1所示,一种Excel二维表格导入的方法,包括以下步骤:
步骤1.编写excel导入入口类,所述excel导入入口类中设有导入的模块名称及导入日期设置项,且一个模块名称代表一个业务类。
本实施例中具体为编写excel导入入口类,并将其放在控制层controller,其中,输入参数包括:模块名称,输入日期。具体的,本实施例中,模块名称采用英文驼峰命名法,输入日期格式yyyy-MM(年-月)。
步骤2.编写excel处理实现类,excel处理实现类包括基本实现类和特殊实现类,所述特殊实现类对应具有特殊需求的业务模块,基本实现类中能完成绝大多数一般化的excel处理内容,特殊实现类则对应有特殊需求的业务模块,且特殊实现类可在基本实现类的基础上进行编写。
本实施例中具体为编写excel处理实现类并放在服务层service,其中,excel处理实现类包括基本实现类BaseExcelHandlerImpl和特殊实现类xxxExcelHandlerImpl,具体的,特殊实现类中的“xxx”,表示业务模块的英文驼峰命名,如果业务模块需要个性化的实现类,可以将基本实现类作为蓝本,编写特定的业务实现类。如果业务模块不需要个性化的定制实现方法,采用基本实现类即可。在excel处理实现类的代码前面加上注解@Component,程序启动的时候SpringBoot框架自动扫描Bean组件,装配进Map集合中,通过判断集合中是否有特定模块的实现类名,来决定是利用基本实现类,还是特定模块实现类。
步骤3.在进行数据导入前先判断当前数据所在excel的模块名称是否为设定的模块名称,若是则进入步骤4,否则,采用常规excel导入方法实现数据导入;具体为当没有输入模块名称或输入的模块名称对应的具体导入方法不存在时,即只调用基础通用excel导入方法,仅在模块名称为设定的模块名称时,在调用对应的具体导入方法,可实现用一条引用命令去调用公用方法,减少了共同代码的使用量,使得代码容易修改且阅读清晰。
步骤4.调用与所述模块名称对应的导入方法实现数据导入,其中,导入方法是在excel处理实现类中进行编写,具体的导入方法包括:
步骤4.1.调用对应的监听器,在扫描解析完一行excel数据即往list表添加一行对象数据,并判断当前是否已到excel最后一行数据,若是,则进入步骤步骤4.2,否则,进入步骤4.3,具体的,本方法中是采用开源的easyexcel后台逐行扫描并读取内容;。
具体的,本实施例中,监听器为逐行监听器且放在listener层,具体分为基本监听器BaseExcelListener,和特定业务模块监听器xxxExcelListener。特定业务模块监听器中的“xxx”,表示业务模块的英文驼峰命名,如果业务模块需要个性化的监听器,可以将基本监听器作为蓝本,编写特定的业务监听器。如果业务模块不需要个性化的监听器,采用基本监听器即可。在监听器代码前面加上注解@Component,程序启动的时候SpringBoot框架自动扫描Bean组件,装配进Map集合。通过判断集合中是否有特定模块的监听器名称,来决定是利用基本监听器,还是特定模块监听器。
步骤4.2.将list表中所有数据全部插入目标数据表,完成此次数据导入;
步骤4.3.判定当前list表中的对象数据是否达到一千行,若未达到则继续扫描下一行excel数据返回步骤步4.1,否则,进入步骤4.4;
步骤4.4.将当前list表中所有数据全部插入目标数据表,并清空list表,再继续扫描下一行excel数据返回步骤4.1;
同时,本实施例中作出如下测试:
本方案使用easyexcel插件,mybatis sql框架,JVM内存设置1G,上传excel表,34万行,26列,循环一千条插入数据表,耗时15分钟。如果单条循环插入数据表,要45分钟。
测试对比方案用easypoi插件,mybatis sql框架,JVM内存设置8G,上传excel表,34万行,26列,循环一千条插入数据表,耗时4.5分钟。如果单条循环插入数据表,要57分钟。
经过测试对比得出:
单条循环插入数据表很耗时,第二种对比方案,虽然用时较少,但是该应用程序的可使用内存必须设到8G,现有技术中常规情况下一般是无法满足这个条件的。因此,本方案的设置是综合最优的。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
Claims (6)
1.一种Excel二维表格导入的方法,其特征在于,包括以下步骤:
A.编写excel导入入口类,所述excel导入入口类中设有导入的模块名称,且一个模块名称代表一个业务类;
B.在进行数据导入前先判断当前数据所在excel的模块名称是否为设定的模块名称,若是则进入步骤C,否则,采用常规excel导入方法实现数据导入;
C.调用与所述模块名称对应的导入方法实现数据导入,包括:
C1.调用对应的监听器,在扫描解析完一行excel数据即往list表添加一行对象数据,并判断当前是否已到excel最后一行数据,若是,则进入步骤C2,否则,进入步骤C3;
C2.将list表中所有数据全部插入目标数据表,完成此次数据导入;
C3.判定当前list表中的对象数据是否达到n行,若未达到则继续扫描下一行excel数据返回步骤C1,否则,进入步骤C4;
C4.将当前list表中所有数据全部插入目标数据表,并清空list表,再继续扫描下一行excel数据返回步骤C1。
2.根据权利要求1所述的一种Excel二维表格导入的方法,其特征在于,n的取值为1千。
3.根据权利要求1所述的一种Excel二维表格导入的方法,其特征在于,所述excel导入入口类中还设有导入日期设置项。
4.根据权利要求1所述的一种Excel二维表格导入的方法,其特征在于,所述模块名称采用英文驼峰命名法。
5.根据权利要求1至4中任一所述的一种Excel二维表格导入的方法,其特征在于,在所述步骤A中还包括编写excel处理实现类,所述excel处理实现类包括基本实现类和特殊实现类,所述特殊实现类对应具有特殊需求的业务模块。
6.根据权利要求5所述的一种Excel二维表格导入的方法,其特征在于,所述导入方法编写在与模块名称对应的excel处理实现类中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910859362.9A CN110633462A (zh) | 2019-09-11 | 2019-09-11 | 一种Excel二维表格导入的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910859362.9A CN110633462A (zh) | 2019-09-11 | 2019-09-11 | 一种Excel二维表格导入的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110633462A true CN110633462A (zh) | 2019-12-31 |
Family
ID=68971541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910859362.9A Pending CN110633462A (zh) | 2019-09-11 | 2019-09-11 | 一种Excel二维表格导入的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110633462A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111737964A (zh) * | 2020-06-23 | 2020-10-02 | 深圳前海微众银行股份有限公司 | 表格动态处理方法、设备及介质 |
CN112818655A (zh) * | 2021-04-19 | 2021-05-18 | 中建电子商务有限责任公司 | 一种基于模板和文件追加写的excel数据处理方法和工具 |
CN113672611A (zh) * | 2020-05-13 | 2021-11-19 | 华晨宝马汽车有限公司 | 用于实现电子制表软件中的sql查询的方法和设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103500196A (zh) * | 2013-09-22 | 2014-01-08 | 成都交大光芒科技股份有限公司 | 多并发大数据量环境下excel数据导出方法及其导出装置 |
CN106933835A (zh) * | 2015-12-29 | 2017-07-07 | 航天信息软件技术有限公司 | 一种兼容性解析Excel文件的数据导入方法及系统 |
CN109446257A (zh) * | 2018-10-18 | 2019-03-08 | 浪潮软件集团有限公司 | 一种将excel文件数据导入数据库的方法及装置 |
CN110134398A (zh) * | 2018-02-02 | 2019-08-16 | 阿里巴巴集团控股有限公司 | 表格数据的解析方法、系统及设备 |
-
2019
- 2019-09-11 CN CN201910859362.9A patent/CN110633462A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103500196A (zh) * | 2013-09-22 | 2014-01-08 | 成都交大光芒科技股份有限公司 | 多并发大数据量环境下excel数据导出方法及其导出装置 |
CN106933835A (zh) * | 2015-12-29 | 2017-07-07 | 航天信息软件技术有限公司 | 一种兼容性解析Excel文件的数据导入方法及系统 |
CN110134398A (zh) * | 2018-02-02 | 2019-08-16 | 阿里巴巴集团控股有限公司 | 表格数据的解析方法、系统及设备 |
CN109446257A (zh) * | 2018-10-18 | 2019-03-08 | 浪潮软件集团有限公司 | 一种将excel文件数据导入数据库的方法及装置 |
Non-Patent Citations (2)
Title |
---|
APPLEZHANG1314: "excel大量数据读取到数据库,最好的实现方案", 《HTTPS://BBS.CSDN.NET/TOPICS/300220678?LIST=2555610》 * |
大漠荒野: "解析EXCEL文件并将数据导入到数据库中", 《HTTPS://WWW.CNBLOGS.COM/LIXINJUN8080/P/10901964.HTML》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113672611A (zh) * | 2020-05-13 | 2021-11-19 | 华晨宝马汽车有限公司 | 用于实现电子制表软件中的sql查询的方法和设备 |
CN111737964A (zh) * | 2020-06-23 | 2020-10-02 | 深圳前海微众银行股份有限公司 | 表格动态处理方法、设备及介质 |
CN111737964B (zh) * | 2020-06-23 | 2024-03-19 | 深圳前海微众银行股份有限公司 | 表格动态处理方法、设备及介质 |
CN112818655A (zh) * | 2021-04-19 | 2021-05-18 | 中建电子商务有限责任公司 | 一种基于模板和文件追加写的excel数据处理方法和工具 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110633462A (zh) | 一种Excel二维表格导入的方法 | |
CN104866599B (zh) | 可视化报表的生产方法和系统 | |
CN102831052B (zh) | 测试用例自动化生成装置及方法 | |
CN110209650A (zh) | 数据规整迁移方法、装置、计算机设备和存储介质 | |
CN107741903A (zh) | 应用程序兼容性测试方法、装置、计算机设备和存储介质 | |
CN112630622B (zh) | ATE设备的pattern编译下载测试的方法及系统 | |
CN112181854B (zh) | 一种生成流程自动化脚本的方法、装置、设备及存储介质 | |
CN106557307B (zh) | 业务数据的处理方法及处理系统 | |
CN106599167B (zh) | 一种支持增量升级数据库的系统和方法 | |
CN109634846B (zh) | 一种etl软件测试方法和装置 | |
CN112597033B (zh) | 一种自动化接口测试方法及装置 | |
CN102426567A (zh) | 一种自动应答系统的图形化编辑调试系统 | |
CN114020630A (zh) | 一种接口用例自动生成方法及系统 | |
CN116893854B (zh) | 指令资源的冲突检测方法、装置、设备及存储介质 | |
CN117785212A (zh) | 导入依赖包和第三方库裁剪优化方法、装置、介质及设备 | |
CN201548954U (zh) | 一种对Web页面进行自动化测试的装置 | |
CN116090380B (zh) | 数字集成电路验证的自动化方法及装置、存储介质和终端 | |
CN114936045B (zh) | Mcal的io驱动模块自动配置方法及系统、存储介质 | |
CN112527584A (zh) | 基于脚本编写及数据采集的软件效能提升方法和系统 | |
CN110852035A (zh) | 可自主学习的pcb设计平台 | |
CN117574817B (zh) | 自适应时序变化的设计自动化验证方法、系统及验证平台 | |
CN110377972B (zh) | 一种硬件原理图自动化集成排序方法和装置 | |
CN114546534B (zh) | 一种应用页面启动方法、装置、设备及介质 | |
CN114925070A (zh) | 一种飞行模拟机数据库配置方法和系统 | |
CN117707616A (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: 20191231 |