CN109783565A - 一种excel数据快速导入的方法和系统 - Google Patents
一种excel数据快速导入的方法和系统 Download PDFInfo
- Publication number
- CN109783565A CN109783565A CN201910120887.0A CN201910120887A CN109783565A CN 109783565 A CN109783565 A CN 109783565A CN 201910120887 A CN201910120887 A CN 201910120887A CN 109783565 A CN109783565 A CN 109783565A
- Authority
- CN
- China
- Prior art keywords
- excel data
- imported
- excel
- data
- linked list
- 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.)
- Withdrawn
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种excel数据快速导入的方法,包括:S1,选择系统内已有的excel数据文档;S2,采用POI技术解析待导入的excel数据,得到关联列表,其中关联列表的一侧边列为待导入的excel数据的属性字段,关联列表的另一侧边列为从已有的excel数据文档中读取到的且与所述属性字段相对应的表头类;S3,将待导入的excel数据根据字段规范性验证规则进行验证;S4,若验证通过,则将待导入的excel数据导入到应用系统中,这样能够用户可以利用手头已有的excel数据模型,在导入的界面上选择匹配的导入数据,直接导入即可,大大减轻了用户的工作负担,提高效率。
Description
技术领域
本发明涉及数据导入技术领域,具体涉及一种excel数据快速导入的方法和系统。
背景技术
在某些系统的某些场景中需要通过excel表格导入数据到系统中。现有的方式是提供固定的模板,让用户挨个填充数据后再导入应用系统中。比如,在学生管理系统中,需要将全班学生的姓名、性别,学号,是否为贫困生导入。则现有的方式需要在学生管理系统中建立固定的模板,将全班学生的姓名、性别,学号,是否为贫困生导入这些信息挨个输入到模板中,这样操作繁琐,加重了用户的工作负担,且耗时,容易出错。
发明内容
本发明的目的是为了克服以上现有技术存在的不足,提供了一种excel数据快速导入的方法。
本发明的另一目的是为了克服以上现有技术存在的不足,提供了一种excel数据快速导入的系统。
本发明的目的通过以下的技术方案实现:
一种excel数据快速导入的方法,包括:
S1,选择系统内已有的excel数据文档;
S2,采用POI技术解析待导入的excel数据,得到关联列表,其中关联列表的一侧边列为待导入的excel数据的属性字段,关联列表的另一侧边列为从已有的excel数据文档中读取到的且与所述属性字段相对应的表头类;所述关联列表的中间列为字段规范性验证规则;
S3,将待导入的excel数据根据字段规范性验证规则进行验证;
S4,若验证通过,则将待导入的excel数据导入到应用系统中。
优选地,步骤S2和S3之间包括:
前端将关联列表每一行中属性字段对应的数值和表头列名对应的数值组合成字符;
将关联列表每一行对应的数值组合成的字符利用逗号分隔组装成字符串,将字符串作为参数值;后台接收导入请求和参数值;
采用java的分割技术按逗号分割参数值,并存放到数组中待用。
优选地,所述字段规范性验证规则为正则表达式。
优选地,步骤S4包括:
通过Java的File类读取待导入的Excel数据,采用POI的XSSFWorkbook方式操作待导入的Excel数据;
所述通过Java的File类读取待导入的excel数据,采用POI的XSSFWorkbook方式操作待导入的excel数据包括:
调用HSSFSheet.getLastRowNum()方法获得待导入的excel数据的总行数,使用for循环遍历每一行;
调用Row.getCell(col).getStringCellValue()获得每一行中每列的值;
利用正则表达式的java.util.regex.Matcher类对每一行中每列的值进行验证;
若本行数据均验证通过,则把本行数据写入到redis缓存;
执行异步线程把缓存上的数据插入到数据库中。
优选地,若验证不通过,则将错误写入日志信息中。
本发明的另一目的通过以下的技术方案实现:
一种excel数据快速导入的系统,包括:已有excel文档选择模块、POI解析模块、验证模块和导入模块;所述已有excel文档选择模块,用于选择系统内已有的excel数据文档;所述POI解析模块,用于采用POI技术解析待导入的excel数据,得到关联列表,其中关联列表的一侧边列为待导入的excel数据的属性字段,关联列表的另一侧边列为从已有的excel数据文档中读取到的且与所述属性字段相对应的表头类;所述关联列表的中间列为字段规范性验证规则;所述验证模块,用于将待导入的excel数据根据字段规范性验证规则进行验证;所述导入模块,用于若验证通过,则将待导入的excel数据导入到应用系统中。
优选地,还包括:数值组合模块、字符串组装模块、后台参数值接收模块和参数值存储模块;所述数值组合模块,用于前端将关联列表每一行中属性字段对应的数值和表头列名对应的数值组合成字符;所述字符串组装模块,用于将关联列表每一行对应的数值组合成的字符利用逗号分隔组装成字符串,将字符串作为参数值;所述后台参数值接收模块,用于后台接收导入请求和参数值;所述参数值存储模块,用于采用java的分割技术按逗号分割参数值,并存放到数组中待用。
优选地,所述字段规范性验证规则为正则表达式。
优选地,所述验证模块,还用于通过Java的File类读取待导入的excel数据,采用POI的XSSFWorkbook方式操作待导入的Excel数据;所述验证模块包括:for循环遍历单元、参数值获取单元、验证单元、写入单元和数据库存入单元;所述for循环遍历单元,用于调用HSSFSheet.getLastRowNum()方法获得待导入的excel数据的总行数,使用for循环遍历每一行;所述参数值获取单元,用于调用Row.getCell(col).getStringCellValue()获得每一行中每列的值;所述验证单元,用于利用正则表达式的java.util.regex.Matcher类对每一行中每列的值进行验证;所述写入单元,用于若本行数据均验证通过,则把本行数据写入到redis缓存;所述数据库存入单元,用于执行异步线程把缓存上的数据插入到数据库中。
优选地,若验证不通过,则将错误写入日志信息中。
本发明相对于现有技术具有如下的优点:
本发明通过选择系统内已有的excel数据文档,采用POI技术解析待导入的excel数据,生成与所述已有的excel数据文档相关的关联列表,将待导入的excel数据根据字段规范性验证规则进行验证;若验证通过,则将待导入的excel数据导入到应用系统中,这样能够用户可以利用手头已有的excel数据模型,在导入的界面上选择匹配的导入数据,直接导入即可,大大减轻了用户的工作负担,提高效率。
附图说明
图1是本发明的excel数据快速导入的方法的流程示意图。
图2是本发明的选择的系统内已有的excel数据文档图。
图3是本发明的采用POI技术解析的待导入的excel数据结果图。
图4是本发明的包含待导入的excel数据的属性字段和从已有的excel数据文档中读取到的表头类的关联列表图。
图5是本发明的导入结果信息图。
图6是本发明的excel数据快速导入的系统的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。
参见图1-5、一种excel数据快速导入的方法,包括:
S1,选择系统内已有的excel数据文档;图2是本实施例选择的系统内已有的excel数据文档。
S2,采用POI技术解析待导入的excel数据,生成与所述已有的excel数据文档相关的关联列表,其中关联列表的一侧边列为待导入的excel数据的属性字段,关联列表的另一侧边列为从已有的excel数据文档中读取到的且与所述属性字段相对应的表头类;所述关联列表的中间列为字段规范性验证规则;所述字段规范性验证规则为正则表达式,所述正则表达式为预先定义好的特定字符和/或特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。采用POI技术解析待导入的excel数据结果如图3所示。其中,待导入的excel数据代表待导入数据的来源。
在本实施例,如图4所示,关联列表的一侧边列为最左侧的列,关联列表的另一侧边列为最右侧的列。生成与所述已有的excel数据文档相关的关联列表过程中,系统会根据关键字先将每一行中最左侧的列的属性字段和最右侧的列的表头列名模糊匹配一次,同时用户可以手动调整右边列表每一行的表头列名与左边的属性字段列对应。
步骤S2和S3之间包括:前端将关联列表每一行中属性字段对应的数值和表头列名对应的数值组合成字符;比如,在图4中,学生名称这一行,则将学生名称和学生姓名A对应的值组合成一个字符。
将关联列表每一行对应的数值组合成的字符利用逗号分隔组装成字符串,将字符串作为参数值;这样能够把每一学生的信息组装成一个参数值。
后台接收导入请求和参数值;
采用java的分割技术按逗号分割参数值,并存放到数组中待用。这时数组中的值就可以确定待导入的excel数据列是要导入到已有的excel数据文档的哪个字段中了。
S3,将待导入的excel数据根据字段规范性验证规则进行验证;
S4,若验证通过,则将待导入的excel数据导入到应用系统中。所述应用系统可以为学生管理系统、教师管理系统或者OA管理系统,在此不作具体限定。
具体地,步骤S4包括:
通过Java的File类读取待导入的excel数据,采用POI的XSSFWorkbook方式操作待导入的excel数据;
所述通过Java的File类读取待导入的excel数据,采用POI的XSSFWorkbook方式操作待导入的Excel数据包括:
调用HSSFSheet.getLastRowNum()方法获得待导入的excel数据的总行数,使用for循环遍历每一行;
调用Row.getCell(col).getStringCellValue()获得每一行中每列的值;
利用正则表达式的java.util.regex.Matcher类对每一行中每列的值进行验证;
若本行数据均验证通过,则把本行数据写入到redis缓存;
执行异步线程把缓存上的数据插入到数据库中,直到遍历完待导入的excel的数据,最后检查redis缓存中的数据是否全部入库。
若验证不通过,则将错误写入日志信息中,即若验证不通过,则写入日志信息哪一行、哪一列出错了,并跳过本次循环。
参见图6、上述excel数据快速导入的方法适用的一种excel数据快速导入的系统,包括:已有excel文档选择模块、POI解析模块、验证模块和导入模块;所述已有excel文档选择模块,用于选择系统内已有的excel数据文档;所述POI解析模块,用于采用POI技术解析待导入的excel数据,得到关联列表,其中关联列表的一侧边列为待导入的excel数据的属性字段,关联列表的另一侧边列为从已有的excel数据文档中读取到的且与所述属性字段相对应的表头类;所述关联列表的中间列为字段规范性验证规则;所述验证模块,用于将待导入的excel数据根据字段规范性验证规则进行验证;所述导入模块,用于若验证通过,则将待导入的excel数据导入到应用系统中。
在本实施例,还包括:数值组合模块、字符串组装模块、后台参数值接收模块和参数值存储模块;所述数值组合模块,用于前端将关联列表每一行中属性字段对应的数值和表头列名对应的数值组合成字符;所述字符串组装模块,用于将关联列表每一行对应的数值组合成的字符利用逗号分隔组装成字符串,将字符串作为参数值;所述后台参数值接收模块,用于后台接收导入请求和参数值;所述参数值存储模块,用于采用java的分割技术按逗号分割参数值,并存放到数组中待用。
在本实施例,所述字段规范性验证规则为正则表达式。
在本实施例,所述验证模块,还用于通过Java的File类读取待导入的excel数据,采用POI的XSSFWorkbook方式操作待导入的Excel数据;所述验证模块包括:for循环遍历单元、参数值获取单元、验证单元、写入单元和数据库存入单元;所述for循环遍历单元,用于调用HSSFSheet.getLastRowNum()方法获得待导入的excel数据的总行数,使用for循环遍历每一行;所述参数值获取单元,用于调用Row.getCell(col).getStringCellValue()获得每一行中每列的值;所述验证单元,用于利用正则表达式的java.util.regex.Matcher类对每一行中每列的值进行验证;所述写入单元,用于若本行数据均验证通过,则把本行数据写入到redis缓存;所述数据库存入单元,用于执行异步线程把缓存上的数据插入到数据库中。
在本实施例,若验证不通过,则将错误写入日志信息中。
本方案通过选择系统内已有的excel数据文档,采用POI技术解析待导入的excel数据,生成与所述已有的excel数据文档相关的关联列表,将待导入的excel数据根据字段规范性验证规则进行验证;若验证通过,则将待导入的excel数据导入到应用系统中,这样能够用户可以利用手头已有的excel数据模型,在导入的界面上选择匹配的导入数据,直接导入即可,大大减轻了用户的工作负担,提高效率。
上述具体实施方式为本发明的优选实施例,并不能对本发明进行限定,其他的任何未背离本发明的技术方案而所做的改变或其它等效的置换方式,都包含在本发明的保护范围之内。
Claims (10)
1.一种excel数据快速导入的方法,其特征在于,包括:
S1,选择系统内已有的excel数据文档;
S2,采用POI技术解析待导入的excel数据,得到关联列表,其中关联列表的一侧边列为待导入的excel数据的属性字段,关联列表的另一侧边列为从已有的excel数据文档中读取到的且与所述属性字段相对应的表头类;所述关联列表的中间列为字段规范性验证规则;
S3,将待导入的excel数据根据字段规范性验证规则进行验证;
S4,若验证通过,则将待导入的excel数据导入到应用系统中。
2.根据权利要求1所述的excel数据快速导入的方法,其特征在于,步骤S2和S3之间包括:
前端将关联列表每一行中属性字段对应的数值和表头列名对应的数值组合成字符;
将关联列表每一行对应的数值组合成的字符利用逗号分隔组装成字符串,将字符串作为参数值;后台接收导入请求和参数值;
采用java的分割技术按逗号分割参数值,并存放到数组中待用。
3.根据权利要求1所述的excel数据快速导入的方法,其特征在于,所述字段规范性验证规则为正则表达式。
4.根据权利要求3所述的excel数据快速导入的方法,其特征在于,步骤S4包括:
通过Java的File类读取待导入的excel数据,采用POI的XSSFWorkbook方式操作待导入的excel数据;
所述通过Java的File类读取待导入的Excel数据,采用POI的XSSFWorkbook方式操作待导入的excel数据包括:
调用HSSFSheet.getLastRowNum()方法获得待导入的excel数据的总行数,使用for循环遍历每一行;
调用Row.getCell(col).getStringCellValue()获得每一行中每列的值;
利用正则表达式的java.util.regex.Matcher类对每一行中每列的值进行验证;
若本行数据均验证通过,则把本行数据写入到redis缓存;
执行异步线程把缓存上的数据插入到数据库中。
5.根据权利要求1所述的excel数据快速导入的方法,其特征在于,若验证不通过,则将错误写入日志信息中。
6.一种excel数据快速导入的系统,其特征在于,包括:已有excel文档选择模块、POI解析模块、验证模块和导入模块;
所述已有excel文档选择模块,用于选择系统内已有的excel数据文档;
所述POI解析模块,用于采用POI技术解析待导入的excel数据,得到关联列表,其中关联列表的一侧边列为待导入的excel数据的属性字段,关联列表的另一侧边列为从已有的excel数据文档中读取到的且与所述属性字段相对应的表头类;所述关联列表的中间列为字段规范性验证规则;
所述验证模块,用于将待导入的excel数据根据字段规范性验证规则进行验证;
所述导入模块,用于若验证通过,则将待导入的excel数据导入到应用系统中。
7.根据权利要求6所述的excel数据快速导入的系统,其特征在于,还包括:数值组合模块、字符串组装模块、后台参数值接收模块和参数值存储模块;
所述数值组合模块,用于前端将关联列表每一行中属性字段对应的数值和表头列名对应的数值组合成字符;
所述字符串组装模块,用于将关联列表每一行对应的数值组合成的字符利用逗号分隔组装成字符串,将字符串作为参数值;
所述后台参数值接收模块,用于后台接收导入请求和参数值;
所述参数值存储模块,用于采用java的分割技术按逗号分割参数值,并存放到数组中待用。
8.根据权利要求6所述的excel数据快速导入的系统,其特征在于,所述字段规范性验证规则为正则表达式。
9.根据权利要求8所述的excel数据快速导入的系统,其特征在于,所述验证模块,还用于通过Java的File类读取待导入的excel数据,采用POI的XSSFWorkbook方式操作待导入的excel数据;
所述验证模块包括:for循环遍历单元、参数值获取单元、验证单元、写入单元和数据库存入单元;
所述for循环遍历单元,用于调用HSSFSheet.getLastRowNum()方法获得待导入的excel数据的总行数,使用for循环遍历每一行;
所述参数值获取单元,用于调用Row.getCell(col).getStringCellValue()获得每一行中每列的值;
所述验证单元,用于利用正则表达式的java.util.regex.Matcher类对每一行中每列的值进行验证;
所述写入单元,用于若本行数据均验证通过,则把本行数据写入到redis缓存;
所述数据库存入单元,用于执行异步线程把缓存上的数据插入到数据库中。
10.根据权利要求6所述的excel数据快速导入的系统,其特征在于,若验证不通过,则将错误写入日志信息中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910120887.0A CN109783565A (zh) | 2019-02-18 | 2019-02-18 | 一种excel数据快速导入的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910120887.0A CN109783565A (zh) | 2019-02-18 | 2019-02-18 | 一种excel数据快速导入的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109783565A true CN109783565A (zh) | 2019-05-21 |
Family
ID=66504458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910120887.0A Withdrawn CN109783565A (zh) | 2019-02-18 | 2019-02-18 | 一种excel数据快速导入的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109783565A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110728121A (zh) * | 2019-09-17 | 2020-01-24 | 杭州安恒信息技术股份有限公司 | 基于现有接口实现零开发的数据导入系统及方法 |
CN112230906A (zh) * | 2019-07-15 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 列表控件的创建方法、装置、设备及可读存储介质 |
CN112256778A (zh) * | 2020-10-20 | 2021-01-22 | 大唐融合通信股份有限公司 | 一种数据导入方法、装置及设备 |
CN112668292A (zh) * | 2020-12-30 | 2021-04-16 | 卡斯柯信号有限公司 | 一种从系统配置规则中自动提取追踪矩阵的方法及其应用 |
CN114372177A (zh) * | 2022-03-22 | 2022-04-19 | 创意信息技术股份有限公司 | 一种Excel表格数据匹配方法 |
-
2019
- 2019-02-18 CN CN201910120887.0A patent/CN109783565A/zh not_active Withdrawn
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112230906A (zh) * | 2019-07-15 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 列表控件的创建方法、装置、设备及可读存储介质 |
CN112230906B (zh) * | 2019-07-15 | 2023-05-23 | 腾讯科技(深圳)有限公司 | 列表控件的创建方法、装置、设备及可读存储介质 |
CN110728121A (zh) * | 2019-09-17 | 2020-01-24 | 杭州安恒信息技术股份有限公司 | 基于现有接口实现零开发的数据导入系统及方法 |
CN110728121B (zh) * | 2019-09-17 | 2023-08-01 | 杭州安恒信息技术股份有限公司 | 基于现有接口实现零开发的数据导入系统及方法 |
CN112256778A (zh) * | 2020-10-20 | 2021-01-22 | 大唐融合通信股份有限公司 | 一种数据导入方法、装置及设备 |
CN112668292A (zh) * | 2020-12-30 | 2021-04-16 | 卡斯柯信号有限公司 | 一种从系统配置规则中自动提取追踪矩阵的方法及其应用 |
CN112668292B (zh) * | 2020-12-30 | 2022-09-30 | 卡斯柯信号有限公司 | 一种从系统配置规则中自动提取追踪矩阵的方法及其应用 |
CN114372177A (zh) * | 2022-03-22 | 2022-04-19 | 创意信息技术股份有限公司 | 一种Excel表格数据匹配方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109783565A (zh) | 一种excel数据快速导入的方法和系统 | |
WO2020000706A1 (zh) | 基于数据库比对的接口测试方法、系统、设备和存储介质 | |
CN102831052B (zh) | 测试用例自动化生成装置及方法 | |
US8489623B2 (en) | Creating data in a data store using a dynamic ontology | |
CN105608088B (zh) | 一种基于配置文件的数据库自动创建与数据动态记录方法 | |
CN110245083A (zh) | 一种基于python的接口自动化测试方法 | |
CN107122258A (zh) | 用于测试接口的状态码校验的方法及设备 | |
CN110362497A (zh) | 覆盖全异常字符的自动化api接口测试方法和系统 | |
CN107273117A (zh) | 一种编程友好型的敏捷代码自动生成系统 | |
CN107291450A (zh) | 一种编程友好型的敏捷代码自动生成方法 | |
CN109491860A (zh) | 应用程序的异常检测方法、终端设备及介质 | |
CN110275861A (zh) | 数据存储方法及装置、存储介质、电子装置 | |
CN107992421A (zh) | 接口测试方法及其装置与计算机装置及其可读存储介质 | |
CN108038175A (zh) | 多维数据动态关联查询方法、装置、计算机设备和介质 | |
CN103377123B (zh) | 一种网页代码自动化测试方法及装置 | |
CN104731587A (zh) | 单元测试数据生成方法和单元测试数据生成系统 | |
US7275231B2 (en) | High level validation of designs and products | |
CN111177007B (zh) | 一种基于测试数据自动生成bdd测试案例的方法及系统 | |
CN110262978A (zh) | 一种基于长流程自动化测试的接口重试方法及数据流 | |
CN113761879B (zh) | 报文格式校验方法、装置以及存储介质 | |
CN103810094B (zh) | 一种测试案例的执行方法、装置和测试工具 | |
CN109408050A (zh) | 用于轨道车辆的设备应用程序接口的代码生成方法及装置 | |
US6516306B1 (en) | Model checking of message flow diagrams | |
Nursimulu et al. | Cause-effect graphing analysis and validation of requirements | |
CN115525555A (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20190521 |