`

POI-HSSF的一些疑难问题及解决方式

    博客分类:
  • Java
阅读更多
    * 图片位置无法获取

The only linkage I can find is that there is an EscherProperty called "BLIP__BLIPTODISPLAY", which is inside the EscherOptRecord of each image.
参考:
http://www.nabble.com/Copy-images-from-Workbook-to-Workbook-td23032425.html#a24303124
http://www.nabble.com/Get-image-binary-data-in-Excel-worksheet-with-known-filename-cell-location-td24413607.html

    * 图片 binary data index 错乱问题

这是由于 Excel 中将图片删除,其后的序列不会向前推进。于是就有了一个序列的空缺,此处还是有 BSE 的,只是 Blip 为 null。而 HSSFWorkbook 中的 getAllPictures() 中为了维护 BSE 的可用性,将 Blip 为 null 的信息过滤掉了。于是造成了 index 的混乱。
参考:
http://www.nabble.com/Get-image-binary-data-in-Excel-worksheet-with-known-filename-cell-location-td24413607.html

    * 图片 binary data 大量冗余

此处我改写了 PictrueData 中的 equals 方法,用以对比 blip 的 byte 数组。不过貌似不是必需的。

    * 为什么图片还是对不上

由于Collection的序号是从0开始,获取到的index需要-1才能对应到正确的图片。

    * 为什么是 blip 却没有 ancher

有可能图片属于某个 Graph Group 或者其他什么鬼东西,所以自己没有 ancher 只有 offset 。我实在 EscherContainerRecord 和 ShapeInfomation 中都增加 parent ,从 上层查找 ancher。

    * WARNING: 78 bytes remaining but no space left

这是由于 EscherAggregate.createAggregate 时从 records 里面取出的内容比 xls 中标记的长度要短。此处通常是因为在生成 chart 之后插入图片,此时丢失了这部分图片的信息。大多数情况下删除 chart 可以重新提取到这部分信息。

    * Chart 插入后的结构是怎样的


可以参考本文,这是理想中的结构,可以跳过 Chart 进行解析。但很多时候并不是这样。
http://mail-archives.apache.org/mod_mbox/poi-user/200401.mbox/%3CNFBBJLHLDKIEPKFLMKJDEEICCHAA.zalewski@optonline.net%3E

    * 中文日期为什么会被处理为数字

设置了中文日期格式的不会,手动输入识别的会被识别成数字。因为其 DataFormat 识别码在英文 Excel中没有,分别是0x1f 和 0x39 ,而字符串分别是 0x1f 和 null 。需要特殊处理。

分享到:
评论

相关推荐

    poi-3.8-POI-HSSF和POI-XSSF和SXSSF.rar

    在"poi-3.8-POI-HSSF和POI-XSSF和SXSSF.rar"这个压缩包中,主要涵盖了POI项目对Excel文件处理的三个关键组件:HSSF、XSSF和SXSSF。 1. HSSF (Horrible Spreadsheet Format):这是POI项目早期开发的一个API,用于...

    poi-3.9、poi-ooxml-3.9、poi-ooxml-schemas-3.9

    1. poi-3.9.jar:这是Apache POI的主要库,包含了处理老版Microsoft Office格式(HSSF和XSSF)的基础功能。HSSF是用于读写旧的BIFF格式(Excel 97-2007),而XSSF则是用于处理新的OOXML格式(Excel 2007及以后版本)...

    poi全家桶ooxml-schemas/poi/poi-examples/poi-ooxml/poi-ooxml-schemas/poi-scratchpad

    标题中的"poi全家桶ooxml-schemas/poi/poi-examples/poi-ooxml/poi-ooxml-schemas/poi-scratchpad"提及的是Apache POI项目中的多个关键组件和目录结构。Apache POI是一个开源的Java库,专门用于读写Microsoft Office...

    poi-ooxml-schemas-3.8,poi-3.8,poi-ooxml jar包合集

    标题中的"poi-ooxml-schemas-3.8,poi-3.8,poi-ooxml jar包合集"指的是Apache POI项目中用于处理Microsoft Office格式文件的Java库,特别是针对Excel(XLS和XLSX)文档的处理。Apache POI是一个流行的开源库,允许...

    poi-scratchpad-3.12-20150511和poi-3.12-20150511包

    2. **POI-HSSF+XSSF**: HSSF是处理老版二进制Excel文件格式(.xls)的API,而XSSF则用于处理Open XML格式的Excel文件(.xlsx)。这两个库共同提供了对Excel文件的全面支持。 3. **POI-SXSSF**: SXSSF是提供内存优化...

    poi-ooxml-3.17-API文档-中文版.zip

    赠送jar包:poi-ooxml-3.17.jar; 赠送原API文档:poi-ooxml-3.17-javadoc.jar; 赠送源代码:poi-ooxml-3.17-sources.jar; 赠送Maven依赖信息文件:poi-ooxml-3.17.pom; 包含翻译后的API文档:poi-ooxml-3.17-...

    poi-scratchpad-4.1.2-API文档-中文版.zip

    赠送jar包:poi-scratchpad-4.1.2.jar; 赠送原API文档:poi-scratchpad-4.1.2-javadoc.jar; 赠送源代码:poi-scratchpad-4.1.2-sources.jar; 赠送Maven依赖信息文件:poi-scratchpad-4.1.2.pom; 包含翻译后的API...

    poi-3.10.1上传组件jar包 po poi-ooxml poi-ooxml-schemas

    1. poi-3.10.1.jar:这是Apache POI的主要库,包含了处理HSSF(旧版的Excel格式)和XSSF(XML格式的Excel)的核心功能。它提供了API来操作单元格、行、工作表等Excel元素,以及创建新的工作簿、读取现有工作簿、写入...

    poi的所有jar包,poi, poi-ooxml,poi-ooxml-schemas的各个版本jar

    poi的所有jar包,poi, poi-ooxml,poi-ooxml-schemas的各个版本jar poi的所有jar包,poi, poi-ooxml,poi-ooxml-schemas的各个版本jar

    poi-scratchpad-4.1.2-API文档-中英对照版.zip

    赠送jar包:poi-scratchpad-4.1.2.jar; 赠送原API文档:poi-scratchpad-4.1.2-javadoc.jar; 赠送源代码:poi-scratchpad-4.1.2-sources.jar; 赠送Maven依赖信息文件:poi-scratchpad-4.1.2.pom; 包含翻译后的API...

    poi-ooxml-4.1.2-API文档-中文版.zip

    赠送jar包:poi-ooxml-4.1.2.jar; 赠送原API文档:poi-ooxml-4.1.2-javadoc.jar; 赠送源代码:poi-ooxml-4.1.2-sources.jar; 赠送Maven依赖信息文件:poi-ooxml-4.1.2.pom; 包含翻译后的API文档:poi-ooxml-...

    poi-ooxml-5.2.0-API文档-中英对照版.zip

    赠送jar包:poi-ooxml-5.2.0.jar; 赠送原API文档:poi-ooxml-5.2.0-javadoc.jar; 赠送源代码:poi-ooxml-5.2.0-sources.jar; 赠送Maven依赖信息文件:poi-ooxml-5.2.0.pom; 包含翻译后的API文档:poi-ooxml-...

    poi-3.12-android-a.jar和poi-ooxml-schemas-3.12-20150511-a.jar

    poi-3.12-android-a.jar 和 poi-ooxml-schemas-3.12-20150511-a.jar 是Apache POI项目的特定版本的库文件,专门设计用于在Android平台上处理Microsoft Office文档,尤其是Excel文件。 poi-3.12-android-a.jar: 这是...

    poi-ooxml-5.2.3.jar中文-英文对照文档.zip

    poi-ooxml-***.jar中文-英文对照文档.zip,java,poi-ooxml-***.jar,org.apache.poi,poi-ooxml,***,org.apache.poi.ooxml,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,apache,poi,ooxml,中文-英文对照...

    poi-ooxml-4.1.2.jar中文文档.zip

    poi-ooxml-***.jar中文文档.zip,java,poi-ooxml-***.jar,org.apache.poi,poi-ooxml,***,org.apache.poi.ooxml,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,apache,poi,ooxml,中文API文档,手册,开发...

    poi-ooxml-5.2.0-API文档-中文版.zip

    赠送jar包:poi-ooxml-5.2.0.jar; 赠送原API文档:poi-ooxml-5.2.0-javadoc.jar; 赠送源代码:poi-ooxml-5.2.0-sources.jar; 赠送Maven依赖信息文件:poi-ooxml-5.2.0.pom; 包含翻译后的API文档:poi-ooxml-...

    poi-3.8-20120326.jar、poi-ooxml-3.8-20120326.jar

    内部包括poi-3.8-20120326.jar、poi-ooxml-3.8-20120326.jar、poi-ooxml-schemas-3.8-20120326.jar 测试可用版本,有些下载的不能用

    poi-ooxml-5.2.3.jar中文文档.zip

    poi-ooxml-***.jar中文文档.zip,java,poi-ooxml-***.jar,org.apache.poi,poi-ooxml,***,org.apache.poi.ooxml,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,apache,poi,ooxml,中文API文档,手册,开发...

    poi-ooxml-5.2.2.jar中文文档.zip

    poi-ooxml-***.jar中文文档.zip,java,poi-ooxml-***.jar,org.apache.poi,poi-ooxml,***,org.apache.poi.ooxml,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,apache,poi,ooxml,中文API文档,手册,开发...

Global site tag (gtag.js) - Google Analytics