CN114970474A - 一种基于数据监听的excel导入导出方法及系统 - Google Patents
一种基于数据监听的excel导入导出方法及系统 Download PDFInfo
- Publication number
- CN114970474A CN114970474A CN202210518434.5A CN202210518434A CN114970474A CN 114970474 A CN114970474 A CN 114970474A CN 202210518434 A CN202210518434 A CN 202210518434A CN 114970474 A CN114970474 A CN 114970474A
- Authority
- CN
- China
- Prior art keywords
- file
- data
- import
- byte
- excel
- 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
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/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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于数据监听的excel导入导出方法及系统,涉及数据处理技术领域,方法包括:获取待处理文件的字节输入输出流和行数据;所述字节输入输出流包括字节输入流和字节输出流;所述行数据包括导入行数据和导出行数据;根据所述行数据构建数据模型;所述数据模型为所述待处理文件与数据库字段的映射关系;根据所述数据模型确定所述待处理文件的Class字节码;根据所述字节输入输出流、所述数据模型、所述Class字节码和监听器进行导入和导出处理。本发明通过兼容不同数据类型实现提高excel文件导入导出的效率的目的。
Description
技术领域
本发明涉及数据处理领域,特别是涉及一种基于数据监听的excel导入导出方法及系统。
背景技术
工作过程中存在大量的单位数据需要通过excel格式导入导出,实现下级与上级数据手动交互,采用Apache下的POI实现excel导入导出,编码逻辑实现复杂且手动封装的逻辑代码对服务器性能及内存容量有较高的要求,否则导入导出过程缓慢,甚至还会出现服务器内存溢出(OOM)等情况,在此种情况下亟需一款能够代替POI工具,对excel友好支持的工具实现excel特定功能。所以将解决问题工具定位在开源的Easy Excel工具。
发明内容
本发明的目的是提供一种基于数据监听的excel导入导出方法及系统,以通过兼容不同数据类型实现提高excel文件导入导出的效率的目的。
为实现上述目的,本发明提供了如下方案:
一种基于数据监听的excel导入导出方法,包括:
获取待处理文件的字节输入输出流和行数据;所述字节输入输出流包括字节输入流和字节输出流;所述行数据包括导入行数据和导出行数据;
根据所述行数据构建数据模型;所述数据模型为所述待处理文件与数据库字段的映射关系;
根据所述数据模型确定所述待处理文件的Class字节码;
根据所述字节输入输出流、所述数据模型、所述Class字节码和监听器进行导入和导出处理。
可选地,所述根据所述字节输入输出流、所述数据模型、所述Class字节码和监听器进行导入和导出处理,具体包括:
当所述待处理文件为导入文件时,根据所述字节输入流、所述数据模型、所述Class字节码和所述监听器进行读取,得到导入数据库的文件;
当所述待处理文件为导出文件时,根据所述字节输出流、所述数据模型、所述Class字节码和所述监听器进行写入,得到excel文件。
可选地,所述当所述待处理文件为导入文件时,根据所述字节输入流、所述数据模型、所述Class字节码和所述监听器进行读取,得到导入数据库的文件,具体包括:
将所述字节输入流、所述Class字节码和所述监听器作为入参,利用excel读构建器构建读工作簿;
根据所述读工作簿和所述数据模型进行SAX解析,得到导入数据库的文件。
可选地,在所述将所述字节输入流、所述Class字节码和所述监听器作为入参,利用excel读构建器构建读工作簿之前,还包括:
判断初始化环境中的excel文件阅读器是否初始化成功;若是,则将所述字节输入流、所述Class字节码和所述监听器作为入参,利用excel读构建器构建读工作簿;若否,则中断程序。
一种基于数据监听的excel导入导出系统,包括:
获取模块,用于获取待处理文件的字节输入输出流和行数据;所述字节输入输出流包括字节输入流和字节输出流;所述行数据包括导入行数据和导出行数据;
构建模块,用于根据所述行数据构建数据模型;所述数据模型为所述待处理文件与数据库字段的映射关系;
Class字节码确定模块,用于根据所述数据模型确定所述待处理文件的Class字节码;
导入和导出处理模块,用于根据所述字节输入输出流、所述数据模型、所述Class字节码和监听器进行导入和导出处理。
可选地,所述导入和导出处理模块,具体包括:
导入模块,用于当所述待处理文件为导入文件时,根据所述字节输入流、所述数据模型、所述Class字节码和所述监听器进行读取,得到导入数据库的文件;
导出模块,用于当所述待处理文件为导出文件时,根据所述字节输出流、所述数据模型、所述Class字节码和所述监听器进行写入,得到excel文件。
可选地,所述导入模块,具体包括:
构建单元,用于将所述字节输入流、所述Class字节码和所述监听器作为入参,利用excel读构建器构建读工作簿;
解析单元,用于根据所述读工作簿和所述数据模型进行SAX解析,得到导入数据库的文件。
可选地,还包括:
判断模块,用于判断初始化环境中的excel文件阅读器是否初始化成功;若是,则将所述字节输入流、所述Class字节码和所述监听器作为入参,利用excel读构建器构建读工作簿;若否,则中断程序。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明提供的基于数据监听的excel导入导出方法及系统,获取待处理文件的字节输入输出流和行数据;字节输入输出流包括字节输入流和字节输出流;行数据包括导入行数据和导出行数据;根据行数据构建数据模型;数据模型为待处理文件与数据库字段的映射关系;根据数据模型确定待处理文件的Class字节码;根据字节输入输出流、数据模型、Class字节码和监听器进行导入和导出处理。本发明通过兼容不同数据类型实现提高excel文件导入导出的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的基于数据监听的excel导入导出方法流程图;
图2为本发明提供的excel导入流程图;
图3为本发明提供的excel导出流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种基于数据监听的excel导入导出方法及系统,以通过兼容不同数据类型实现提高excel文件导入导出的效率。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
Easy Excel是一个基于Java的简单、省内存的读写Excel的工具,64M内存1分钟内读取75M(46W行25列)的Excel,使用该工具可向上再次封装为通用的excel进行读写,将每种不同的excel文件标记设定一个文件类型,使用数值型,同时为每种不同excel文件内容建立对应的模型,达到不同excel文件导入导出只需要通过简单的配置文件类型和建立模型即可实现导入导出,实现功能复用,且编码不冗余,节约服务器内存及缩短导入导出时间。
如图1所示,本发明提供的一种基于数据监听的excel导入导出方法,包括:
步骤101:获取待处理文件的字节输入输出流和行数据;所述字节输入输出流包括字节输入流和字节输出流;所述行数据包括导入行数据和导出行数据。
步骤102:根据所述行数据构建数据模型;所述数据模型为所述待处理文件与数据库字段的映射关系,其构建过程为根据Excel文件中表头字段在数据库中创建字段一致的表,再根据该表在系统程序中建立属性一致的类,此处的类即是数据模型。
步骤103:根据所述数据模型确定所述待处理文件的Class字节码。该Class字节码即通过数据模型类得到,举例:User为数据模型,则User.class即为Class字节码。
步骤104:根据所述字节输入输出流、所述数据模型、所述Class字节码和监听器进行导入和导出处理。
在实际应用中,所述步骤104,具体包括:
当所述待处理文件为导入文件时,根据所述字节输入流、所述数据模型、所述Class字节码和所述监听器进行读取,得到导入数据库的文件。其中,所述当所述待处理文件为导入文件时,根据所述字节输入流、所述数据模型、所述Class字节码和所述监听器进行读取,得到导入数据库的文件,具体包括:
将所述字节输入流、所述Class字节码和所述监听器作为入参,利用excel读构建器构建读工作簿。
根据所述读工作簿和所述数据模型进行SAX解析,得到导入数据库的文件。
在实际应用中,在所述将所述字节输入流、所述Class字节码和所述监听器作为入参,利用excel读构建器构建读工作簿之前,还包括:判断初始化环境中的excel文件阅读器是否初始化成功;若是,则将所述字节输入流、所述Class字节码和所述监听器作为入参,利用excel读构建器构建读工作簿;若否,则中断程序。
当所述待处理文件为导出文件时,根据所述字节输出流、所述数据模型、所述Class字节码和所述监听器进行写入,得到excel文件。
针对excel导入处理,业界之前比较流行的是Apache POI组件,POI在解析excel时一次性全部读取并全部加载到内存中,导致导入过程存在严重的问题就是非常的耗内存,特别处理数据量多时,速度慢并且时常伴有异常发生,可支撑并发量不大的情况,但一旦并发上来会存在OOM。使用EasyExcel处理能解决上述过程遇到的技术瓶颈,采用的技术手段主要是观察者(监听器),它采用从磁盘上逐行读取数据,逐行解析。将配置的多少行数据放进一个批处理中,当达到批处理条件后就执行一次导入数据,然后清除批处理的数据,继续将剩下的数据放进批处理中,重复上述步骤。针对excel导入导出过程,做到了通用适配性,如存在两种不同数据类型(用户数据、用户所属部门数据)需要导入导出,传统做法是不同数据类型出一套导入导出的逻辑处理,后期如需增加一种数据类型(用户权限数据)则又需要再添加一套导入导出的逻辑,如此就会导致后期接手的开发人员需要大量维护一个简单的excel导入导出功能。通用适配性则做到了需要导入导出哪种数据类型,只需要开发人员按照配置的通用规则添加一个新的类型即可。
下面以导入导出用户数据为例说明通用规则:
将用户数据的数据类型给定一个数值型的类型(如:1)。明确导入用户数据入库方法名称为:saveUser。明确导出用户数据进行查询时方法名称为:selectPage。明确导入导出数据使用的接口为:UserMapper。明确导入导出用户数据模型为User,表头类字节码为User.class(以下简称Class字节码)。用户数据模型建立过程为使用用户具有的共同属性和行为,抽象出数据模型:
共同属性:用户姓名、年龄、性别、身份证、学历、居住地址等。共同行为:吃、睡、行走、工作等。映射到数据模型的代码为:
获取用户数据模型的Class字节码:直接使用模型名称User.class即为Class字节码,其中点“.”可理解为“的”,直译为“User的class”。明确导入导出两种处理逻辑的通道规则rule。将上述六种参数传递给User枚举类中。当使用者使用导入导出功能时按照传入的数据类型匹配已确定的数据类型值,最终找到该种数据的导入导出具体逻辑完成最终功能。
导入具体方案如图2所示:
首先获取导入文件的字节输入流。输入为文件file,字节输入流作为读取方法的其中一个参数。
建立导入行数据对应的数据模型。使用数据模型的目的是为了清晰的抽象出被导数据属性与数据库表字段一一对应的映射关系。数据模型可理解为现实世界中对某一类事物的抽象,类比人类,人类都具有名字、年龄、性别、身份证号码、学历、住址等特征,吃、睡、行走、工作等行为,抽象到Java世界中其实就是类Class,特征为Class的属性,行为为Class的方法。人类是对具体某个人的抽象,某个人是人类的具体化。将模型中的属性名与数据库字段名设置一致,形成一一对应的映射关系。
在数据模型的基础上获取到数据模型的Class字节码。获取字节码的输入为数据模型,输出为Class字节码。
当以上参数条件准备完成后再创建一个通用的导入监听器,监听器需要三个参数。分别为:导入数据的公共服务类、数据模型的Class字节码、嵌入公共服务类中的数据导入接口名称。公共服务类用于处理各种数据类型的导入,即数据入库的处理流程;Class字节码用于反射生成模型实体对象存储excel中行数据至实体对象对应的属性中,如excel中有表头列名为name,则将name列某行的值设置到实体对象的name属性中;数据导入接口用于将数据真正保存到数据库中。将这三个参数传入监听器作为构造参数。其中,利用的导入监听器为现有的。
导入监听器的原理:由EasyExcel的read方法进行一行一行的读取excel中的数据,本监听器继承自Easy Excel中AnalysisEventListener,使用者自定义AnalysisEventListener中未实现的方法invoke,因数据是一行一行读进,所以在invoke方法中亦是一条一条数据进行添加到一个列表中,同时进行数据条数判断,当列表中数据条数大于等于配置的批次数据条数则进行一次数据入库操作,入库操作使用反射技术调用嵌入公共服务类中的数据导入接口实现,本次入库操作完成后清空列表,继续完成剩余数据的入库。在入库过程中,如数据库中字段为数值型的数据(123),但excel单元格中为数字加字母的数据(123abc),这种数据在导入时会出现错误,此时由自定义的onException方法监听导入过程出现的错误并将错误信息转换为非专业人员所能理解的信息呈现,继而用户可根据错误信息排查正在进行导入的excel文件中的错误并修改,完成后重新导入。最后由监听器中doAfterAllAnalysed方法做善后的工作,如释放导入过程中程序占用的一些资源等,可灵活地运用该功能。
导入监听器主要用于监听导入过程,且可配置每批次导入数据条数。使用该监听器可有效应对大数据量的excel导入带来的OOM,相对于POI做到了有效防止。
当读取方法依赖的基础参数文件字节输入流、Class字节码、导入监听器准备完成后将其传递给Easy Excel的read方法作为输入参数并执行读取即可完成导入流程。整个过程无实际输出,数据最终存储至数据库。
read方法和执行doRead读取原理:
read方法:将导入文件的字节输入流、Class字节码、读监听器作为入参传入,返回ExcelReaderBuilder(excel读构建器)并将三个参数设置保存到ExcelReaderBuilder的属性ReadWorkbook(读工作簿,可以理解为一个excel对象)中。ExcelReaderBuilder调用sheet(Object...args)方法,传入sheetNo(工作表号),sheetName(工作表名称),表示按页读取,将ReadWorkbook作为属性构建生成ExcelReader对象创建出ExcelReaderSheetBuilder(excel读工作表构建器),同时将sheetNo,sheetName添加并返回至ExcelReaderSheetBuilder中,实际sheetNo、sheetName的值设置在ReadSheet中。在初始化ExcelReader对象时,首先选择不同的excel分析器,包括XLS、XLSX两种,选择的逻辑为通过匹配ReadWorkbook中excelType的值,创建出SAX分析器XlsSaxAnalyser或XlsxSaxAnalyser(SAX解析模式速度更快,更有效,它逐行扫描文件,边扫描边解析,相比较另一种模式DOM解析,SAX解析可以在解析文档的任意时刻停止),同时为AnalysisContextImpl(分析器全局上下文对象)初始化,对它的属性ReadWorkbookHolder(读工作簿所属者)利用ReadWorkbook进行赋值,读取ReadWorkbook中传进来的属性,以上便是初始化创建环境。
doRead读取原理:首先判断初始化环境中ExcelReader是否初始化成功,如否则中断程序,反之则利用ExcelReader调用read方法,将初始化环境中的ReadSheet作为入参。使用ExcelAnalyser调用analysis方法,根据创建环境时选择的excelReadExecutor进行读取,内部再调用封装的excelReadExecutor的execute方法进行每页读取,内部调用parseXmlSource方法,读取每页数据,入参为字节输入流InputStream,内容处理器ContentHandler,一个sheet读取完后,调用DefaultAnalysisEventProcessor(默认分析事件处理器)读取sheet的每行数据,紧接着调用dealData()方法处理每行数据,当一行数据读取完成后会在该作用域中调用监听器的invoke方法对该行数据处理,接着读取下一条。当每行数据都处理完后,进入endSheet()方法中进行循环调用自定义的监听器的doAfterAllAnalysed方法做善后工作,如前文提及到的释放程序占用的资源等。
导出具体方案如图3所示:
首先获取到导出文件的字节输出流。输入为response,输出为OutputStream。
建立导出行数据对应的数据模型并获取到数据模型的Class字节码,建立数据模型步骤与导入过程建立模型一致。
获取被导出的数据类型的数据集合。因为数据最终都是保存在数据库中的,所以数据集合通过查询数据库得到。无输入,输出为被导出数据类型的所有数据的集合。
将字节输出流、Class字节码传递给EasyExcel的write方法作为入参首先生成excel临时文件,紧接着调用doWrite方法,传入数据集合作为doWrite方法的入参实现数据写入到excel文件中,至此导出流程结束。输出为生成的excel文件。使用EasyExcel.write(Oject...args)方法可省去复杂的编码流程,核心的导出过程都交由EasyExcel底层处理,做到编码不冗余,同时可高效开发出其他类型数据的导出。
doWrite方法数据写入原理:
写操作和读类似,真正执行写操作的为doWrite,首先判断操作写数据的excelWriter对象是否存在,不存在程序抛出异常中断,存在则调用excelWriter的write方法。
write方法中传入两个参数,第一个为数据集合,第二个为即将写入的工作表sheet。形如write(dataList,writeSheet)。该方法内部其实是对ExcelBuilder的addContent方法(见名知意就知道为添加数据)封装调用,由excelBuilder(excel建造者)添加。
调用ExcelBuilder的addContent方法,该方法中先判断dataList是否存在,如存在将写入的工作表对象加入到写数据的上下文中,再判断excelWriteAddExecutor写执行器是否存在,如不存在则使用上下文对象作为属性创建出该对象,利用它的核心add方法,遍历即将导出的数据集合,使用addOneRowOfDataToExcel进行抽象add方法。
先做创建Excel行的准备,包括行的一些属性处理器。
进入addJavaObjectToExcel,在excelWriteAddExecutor中执行addJavaObjectToExcel方法,在这里进行了数据的解析,将数据解析成标题和内容,封装成适合Excel格式的CellData,数据类型等,当该步执行完成后还无法看到文件流的生成。
当以上步骤完成后还需要使用excelWriter调用finish()方法,其内部将写Excel持有容器中的内容流输出,数据真正写至文件中。之后就是关闭流,删除临时文件的过程。
本发明还提供一种基于数据监听的excel导入导出系统,包括:
获取模块,用于获取待处理文件的字节输入输出流和行数据;所述字节输入输出流包括字节输入流和字节输出流;所述行数据包括导入行数据和导出行数据。
构建模块,用于根据所述行数据构建数据模型;所述数据模型为所述待处理文件与数据库字段的映射关系。
Class字节码确定模块,用于根据所述数据模型确定所述待处理文件的Class字节码。
导入和导出处理模块,用于根据所述字节输入输出流、所述数据模型、所述Class字节码和监听器进行导入和导出处理。
作为一种可选地实施方式,所述导入和导出处理模块,具体包括:
导入模块,用于当所述待处理文件为导入文件时,根据所述字节输入流、所述数据模型、所述Class字节码和所述监听器进行读取,得到导入数据库的文件。
导出模块,用于当所述待处理文件为导出文件时,根据所述字节输出流、所述数据模型、所述Class字节码和所述监听器进行写入,得到excel文件。
作为一种可选地实施方式,所述导入模块,具体包括:
构建单元,用于将所述字节输入流、所述Class字节码和所述监听器作为入参,利用excel读构建器构建读工作簿;
解析单元,用于根据所述读工作簿和所述数据模型进行SAX解析,得到导入数据库的文件。
作为一种可选地实施方式,还包括:
判断模块,用于判断初始化环境中的excel文件阅读器是否初始化成功;若是,则将所述字节输入流、所述Class字节码和所述监听器作为入参,利用excel读构建器构建读工作簿;若否,则中断程序。
采用EasyExcel后可对excel导入过程的时间大大缩短,减少占用内存,大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析,采用一行一行的解析模式,并将一行的解析结果以观察者(监听器)的模式通知处理,在尽可能节约内存的情况下支持读写百M的Excel。导入过程因为有了对异常的处理可由开发人员根据不同的错误信息针对性的进行转换,可友好对用户提示过程中出现的错误,背后的技术支持源于工具的观察者(监听器),时耗问题需要使用大容量excel文件进行验证。
本系统结合Easy Excel的读取、写入操作,考虑到不同数据类型均会存在导入导出,所以在编码中采用了枚举策略模式做到了动态的切换数据类型动态适配。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种基于数据监听的excel导入导出方法,其特征在于,包括:
获取待处理文件的字节输入输出流和行数据;所述字节输入输出流包括字节输入流和字节输出流;所述行数据包括导入行数据和导出行数据;
根据所述行数据构建数据模型;所述数据模型为所述待处理文件与数据库字段的映射关系;
根据所述数据模型确定所述待处理文件的Class字节码;
根据所述字节输入输出流、所述数据模型、所述Class字节码和监听器进行导入和导出处理。
2.根据权利要求1所述的基于数据监听的excel导入导出方法,其特征在于,所述根据所述字节输入输出流、所述数据模型、所述Class字节码和监听器进行导入和导出处理,具体包括:
当所述待处理文件为导入文件时,根据所述字节输入流、所述数据模型、所述Class字节码和所述监听器进行读取,得到导入数据库的文件;
当所述待处理文件为导出文件时,根据所述字节输出流、所述数据模型、所述Class字节码和所述监听器进行写入,得到excel文件。
3.根据权利要求2所述的基于数据监听的excel导入导出方法,其特征在于,所述当所述待处理文件为导入文件时,根据所述字节输入流、所述数据模型、所述Class字节码和所述监听器进行读取,得到导入数据库的文件,具体包括:
将所述字节输入流、所述Class字节码和所述监听器作为入参,利用excel读构建器构建读工作簿;
根据所述读工作簿和所述数据模型进行SAX解析,得到导入数据库的文件。
4.根据权利要求3所述的基于数据监听的excel导入导出方法,其特征在于,在所述将所述字节输入流、所述Class字节码和所述监听器作为入参,利用excel读构建器构建读工作簿之前,还包括:
判断初始化环境中的excel文件阅读器是否初始化成功;若是,则将所述字节输入流、所述Class字节码和所述监听器作为入参,利用excel读构建器构建读工作簿;若否,则中断程序。
5.一种基于数据监听的excel导入导出系统,其特征在于,包括:
获取模块,用于获取待处理文件的字节输入输出流和行数据;所述字节输入输出流包括字节输入流和字节输出流;所述行数据包括导入行数据和导出行数据;
构建模块,用于根据所述行数据构建数据模型;所述数据模型为所述待处理文件与数据库字段的映射关系;
Class字节码确定模块,用于根据所述数据模型确定所述待处理文件的Class字节码;
导入和导出处理模块,用于根据所述字节输入输出流、所述数据模型、所述Class字节码和监听器进行导入和导出处理。
6.根据权利要求5所述的基于数据监听的excel导入导出系统,其特征在于,所述导入和导出处理模块,具体包括:
导入模块,用于当所述待处理文件为导入文件时,根据所述字节输入流、所述数据模型、所述Class字节码和所述监听器进行读取,得到导入数据库的文件;
导出模块,用于当所述待处理文件为导出文件时,根据所述字节输出流、所述数据模型、所述Class字节码和所述监听器进行写入,得到excel文件。
7.根据权利要求6所述的基于数据监听的excel导入导出系统,其特征在于,所述导入模块,具体包括:
构建单元,用于将所述字节输入流、所述Class字节码和所述监听器作为入参,利用excel读构建器构建读工作簿;
解析单元,用于根据所述读工作簿和所述数据模型进行SAX解析,得到导入数据库的文件。
8.根据权利要求7所述的基于数据监听的excel导入导出系统,其特征在于,还包括:
判断模块,用于判断初始化环境中的excel文件阅读器是否初始化成功;若是,则将所述字节输入流、所述Class字节码和所述监听器作为入参,利用excel读构建器构建读工作簿;若否,则中断程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210518434.5A CN114970474A (zh) | 2022-05-12 | 2022-05-12 | 一种基于数据监听的excel导入导出方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210518434.5A CN114970474A (zh) | 2022-05-12 | 2022-05-12 | 一种基于数据监听的excel导入导出方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114970474A true CN114970474A (zh) | 2022-08-30 |
Family
ID=82984231
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210518434.5A Pending CN114970474A (zh) | 2022-05-12 | 2022-05-12 | 一种基于数据监听的excel导入导出方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114970474A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115983222A (zh) * | 2023-03-20 | 2023-04-18 | 苏州清研精准汽车科技有限公司 | 基于EasyExcel的文件数据读取方法、装置、设备及介质 |
-
2022
- 2022-05-12 CN CN202210518434.5A patent/CN114970474A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115983222A (zh) * | 2023-03-20 | 2023-04-18 | 苏州清研精准汽车科技有限公司 | 基于EasyExcel的文件数据读取方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20050246685A1 (en) | Object oriented ADN and method of converting a non-object oriented computer language to an object oriented computer language | |
CN111381938B (zh) | 一种基于基础指令集执行区块链中智能合约的方法及系统 | |
US9471282B2 (en) | System and method for using annotations to automatically generate a framework for a custom javaserver faces (JSF) component | |
US6473893B1 (en) | Information objects system, method, and computer program organization | |
CA2391313A1 (en) | Language subset validation | |
CN110673839B (zh) | 分布式工具配置化构建生成方法及系统 | |
CN108427731A (zh) | 页面代码的处理方法、装置、终端设备及介质 | |
CN108241720B (zh) | 数据处理方法、装置和计算机可读存储介质 | |
CN104168250A (zh) | 基于cgi框架的业务流程控制方法及装置 | |
CN110955714A (zh) | 一种将非结构化文本转化为结构化文本的方法及装置 | |
CN113703862A (zh) | 基于配置的接口调用方法、装置、设备及存储介质 | |
CN112187713B (zh) | 报文转换的方法、装置、计算机设备和存储介质 | |
CN108345458B (zh) | 一种静态编译语言与脚本语言的调用方法及系统 | |
CN114970474A (zh) | 一种基于数据监听的excel导入导出方法及系统 | |
CN101202736A (zh) | 一种在通讯网络中实现编解码的方法 | |
CN105867886B (zh) | 一种写表格的方法及装置 | |
CN105005497A (zh) | 一种Java卡虚拟机中本地函数的调用方法及装置 | |
CN105824647A (zh) | 一种表单页面生成方法和装置 | |
CN111259042B (zh) | 一种动态查询方法及系统 | |
CN102609253B (zh) | 一种智能卡的应用实现方法及系统 | |
WO2023184052A1 (zh) | 一种数据处理方法、区块链节点及区块链系统 | |
CN112650512A (zh) | 硬件驱动方法及装置、终端、存储介质 | |
CN111881220A (zh) | 列表存储下的数据操作方法、装置、电子设备和存储介质 | |
CN116700840B (zh) | 文件执行方法、装置、电子设备及可读存储介质 | |
CN110874321A (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 |