System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及大数据读取,具体为一种大数据量excel读取方法。
技术介绍
1、poi读取excel有两种模式,一种是用户模式,一种是sax事件驱动模式,将xlsx格式的文档转换成csv格式后进行读取。
2、现有技术中,用户模式api接口丰富,使用poi的api可以轻松读取excel,但是这种模式需要消耗的内存很大,适用于数据量较少的情况下使用,在遇到数据量较大的sheet、大数据网格、假空行、公式等问题时,就容易出现内存溢出的情况。
技术实现思路
1、本专利技术的目的在于提供一种大数据量excel读取方法,以解决上述
技术介绍
中提出的excel数据结构复杂、数据量大等情况导致的低效率和高资源消耗等问题。
2、为实现上述目的,本专利技术提供如下技术方案:一种大数据量excel读取方法,所述方法包括以下步骤:
3、根据文件拓展名.xls和.xlsx实现excel2003大数据量文件读取;
4、根据文件拓展名.xls和.xlsx实现excel2007大数据量文件读取。
5、优选的,使用poi事件模式解析excel2003文件,将excel2003文件转化为poi中poifsfilesystem对象。
6、优选的,将excel2003文件转化为poi中poifsfilesystem对象的具体操作步骤包括:
7、实现接口hssflistener,实现自己的监听器listener,通过record.sid为特定
8、根据目标文件的文件路径获取到文件的字节输入流fileinputstream-in;
9、根据字节输入流fin创建poisfilesystem实例对象poifs,根据poifs获取到根目录条目directorynode–rootentry。根目录rootentry根据entry实体名workbook获取对应的entry;
10、第二个目录条目名称是workbook,找到第二目录条目,根据对应的流创建一个输入流documentinputstream;
11、解析输入流documentinputstream,根据excelxls文档格式解析为一个个记录record;
12、创建一个自己的监听器类workbook,listener可以注册到hssfrequest中用于监听特定的record,hssfeventfactory传入记录了一个record所有监听器的hssfrequest实例和包含workbook的poifs文件系统之后,将一个文件处理为基本的record事件。
13、优选的,使用poi事件模式解析excelxlsx文档时,poi根据xlsx文档的路径path获取到文件,使用java.util.zip.zipfile打开文件,从zip中获取到[content_types].xml,[content_types].xml文档记录了整个excel文档中所有的xml,解析[content_types].xml,记录解析出的excel各个xml名称:arraylist,excel解析成zippackage实例对象。
14、优选的,excel解析成zippackage实例对象的具体操作步骤包括:
15、根据目标excel2007文件路径path获取到文件流fileinputstream-fls,支持直接使用文件路径path读取;
16、将文件流fls解析成opcpackage实例对象-pkg;
17、使用opcpackage实例对象pkg创建xssfreader实例对象-reader,获取excel文件中所有sheet页数据流信息;
18、进行sax解析,实现自己的处理类;
19、创建xmlreader实例对象-xmlreader;
20、设置内容处理器defaulthander-hander;
21、进行处理。
22、与现有技术相比,本专利技术的有益效果是:
23、本专利技术提出的大数据量excel读取方法,利用sax事件驱动模式解决了excel数据结构复杂、数据量大等情况导致的低效率和高资源消耗问题,在降低内存消耗并且提高读取效率的同时完成大数据量的excel内容读取。
本文档来自技高网...【技术保护点】
1.一种大数据量Excel读取方法,其特征在于:所述方法包括以下步骤:
2.根据权利要求1所述的一种大数据量Excel读取方法,其特征在于:使用POI事件模式解析Excel2003文件,将Excel2003文件转化为POI中POIFSFileSystem对象。
3.根据权利要求2所述的一种大数据量Excel读取方法,其特征在于:将Excel2003文件转化为POI中POIFSFileSystem对象的具体操作步骤包括:
4.根据权利要求1所述的一种大数据量Excel读取方法,其特征在于:使用POI事件模式解析ExcelXLSX文档时,POI根据xlsx文档的路径path获取到文件,使用java.util.zip.ZipFile打开文件,从zip中获取到[Content_Types].xml,[Content_Types].xml文档记录了整个Excel文档中所有的xml,解析[Content_Types].xml,记录解析出的Excel各个xml名称:ArrayList,Excel解析成ZipPackage实例对象。
5.根据权利要
...【技术特征摘要】
1.一种大数据量excel读取方法,其特征在于:所述方法包括以下步骤:
2.根据权利要求1所述的一种大数据量excel读取方法,其特征在于:使用poi事件模式解析excel2003文件,将excel2003文件转化为poi中poifsfilesystem对象。
3.根据权利要求2所述的一种大数据量excel读取方法,其特征在于:将excel2003文件转化为poi中poifsfilesystem对象的具体操作步骤包括:
4.根据权利要求1所述的一种大数据量excel读取方法,其特征在于:使用poi事件模式解析exc...
【专利技术属性】
技术研发人员:隋岩松,高鹏超,单静静,毕云鹏,黄珏,
申请(专利权)人:浪潮云信息技术股份公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。