【技术实现步骤摘要】
一种解析文档二进制格式的方法,系统,设备及可读存储介质
本专利技术涉及文档数据处理
,尤其涉及一种解析文档二进制格式的方法,系统,设备及可读存储介质。
技术介绍
MicrosoftOfficeExcel的版本均采用xls作为其表格文档存储格式。Xls文件格式和doc、ppt、格式类似,是一种复合文档,以流的方式来存储数据,可以存储文字、图片等多种形式的数据。由于某种业务需求,需要将xls文件中存储的图片数据提取出来时,现行方式主要有以下几点:1)利用Excel软件打开xls文件,在图片上点击鼠标右键进行复制,然后再粘贴到画图或其它软件中,或者另存为图片;2)利用Excel软件打开xls文件,另存为网页文件(html),然后从导出的资源文件中获取到文件中的图片。3)在装有Excel软件的操作系统上,采用编程的方式,调用Excel二次开发接口,枚举文件中的图片进行提取操作。上述几种操作方式存在以下缺点:1)操作系统必须安装有支持编辑xls文件的软件,否则无法操作。2)如果xls文件中存储的图片数据很多,手动方式提取图片工作量大,难以操作。3)利用Excel二次开发接口,容易出现兼容性问题,例如异常弹框,功能异常等问题,同时提取效率较低。
技术实现思路
本专利技术提供一种可同时处理多个xls文件中的图片,能够提高处理效率的解析文档二进制格式的方法,系统,设备及可读存储介质。其中,方法包括:步骤一,获取用户输入的xls文 ...
【技术保护点】
1.一种解析文档二进制格式的方法,其特征在于,方法包括:/n步骤一,获取用户输入的xls文件路径以及图片保存文件夹路径;/n步骤二,打开xls文件,获取文件读操作句柄;/n步骤三,打开数据流,获取该数据流的操作句柄;/n步骤四,读取数据流的记录头,对所述记录头类型值进行判断;/n如果记录头类型值是第一类型值,则所述记录头所记录的图片信息数据结构为OfficeArtDggContainer信息;/n步骤五,获取OfficeArtDggContainer信息所对应MsoDrawingGroup的记录信息,判断图片数据是否全部存储在MsoDrawingGroup的记录信息中;/n步骤六,将图片数据全部存储在MsoDrawingGroup的记录信息中;/n将图片数据存储在OfficeArtDggContainer结构的blipStore成员中;/n将图片信息数据,偏移到blipStore处理;/n根据blipStore.rh成员获取总数据长度;依次遍历blipStore.rgfb数据,根据预设算法对数据进行解析处理;/n步骤七,重复上述步骤四至步骤六,直到数据流结束;/n当达到数据流结束位置, ...
【技术特征摘要】
1.一种解析文档二进制格式的方法,其特征在于,方法包括:
步骤一,获取用户输入的xls文件路径以及图片保存文件夹路径;
步骤二,打开xls文件,获取文件读操作句柄;
步骤三,打开数据流,获取该数据流的操作句柄;
步骤四,读取数据流的记录头,对所述记录头类型值进行判断;
如果记录头类型值是第一类型值,则所述记录头所记录的图片信息数据结构为OfficeArtDggContainer信息;
步骤五,获取OfficeArtDggContainer信息所对应MsoDrawingGroup的记录信息,判断图片数据是否全部存储在MsoDrawingGroup的记录信息中;
步骤六,将图片数据全部存储在MsoDrawingGroup的记录信息中;
将图片数据存储在OfficeArtDggContainer结构的blipStore成员中;
将图片信息数据,偏移到blipStore处理;
根据blipStore.rh成员获取总数据长度;依次遍历blipStore.rgfb数据,根据预设算法对数据进行解析处理;
步骤七,重复上述步骤四至步骤六,直到数据流结束;
当达到数据流结束位置,整个提取过程结束,释放资源。
2.根据权利要求1所述的解析文档二进制格式的方法,其特征在于,
步骤四还包括:
如果记录头类型值是第二类型值,则所述数据流已经处理结束,则跳转到步骤七操作;
如果记录头类型值为非第一类型值和第二类型值时,则将文件流的读指针跳转到下一个记录的起始位置,重复步骤四操作。
3.根据权利要求1所述的解析文档二进制格式的方法,其特征在于,
步骤五还包括:图片数据的总字节数为L;MsoDrawingGroup记录信息的容量为预设容量Y;
如果图片数据全部存储在MsoDrawingGroup的记录信息中,则L小于等于预设容量Y;
L大于预设容量Y,则图片数据存储在N个MsoDrawingGroup记录中,将N个MsoDrawingGroup记录均读取后,再跳转到第六步,继续分析操作。
4.根据权利要求3所述的解析文档二进制格式的方法,其特征在于,
N值的确定方法包括:
L对Y取余操作,结果记作M;
若M=0,则N=L/Y;
若M不等于0,则N=(L/Y)+1。
5.根据权利要求1或2所述的解析文档二进制格式的方法,其特征在于,
步骤六中,根据blipStore.rh成员获取总数据长度;依次遍历blipStore.rgfb数据,根据预设算法对数据进行解析处理还包括:
依次遍历blipStore.rgfb数据,如果rh.rcType=0xF007,则采用第一算法进行处理;
第一算法包括:
提取OfficeArtFBSE结构中图片数据;
在OfficeArtFBSE结构中,固定长度为44个字节,成员cbName存储图片名称数据的长度值,...
【专利技术属性】
技术研发人员:李显程,苗功勋,崔新安,王金国,
申请(专利权)人:中孚安全技术有限公司,中孚信息股份有限公司,北京中孚泰和科技发展股份有限公司,
类型:发明
国别省市:山东;37
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。