zoukankan      html  css  js  c++  java
  • Java_POI之MS-Excel2003(扩展名.xls)升级至MS-Excel2007及以上版本(扩展名.xlsx)技术过程概要

    Java_POI之MS-Excel2003(扩展名.xls)升级至MS-Excel2007及以上版本(扩展名.xlsx)技术过程概要

                                                                               作者:Eric.Zhang(花名:穿越者7号)

                                                                               日期:2015年11月11日

    一.前言

    POI技术是Apache基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。详细解释见百度百科http://baike.baidu.com/link?url=CaOC3cXmdxU-2fjV-VfSZjoKvrKEpONcQiWypy0HwbpBTHZNLLrVKFL6BnOR-mQ1_xPbunllGvO5CcG01HZCLDm-eEw7Um8gw2VGjXRAwx3

    二.   HSSFWorkbook升级到XSSFWorkbook过程

             1. HSSFWorkbook是版本比较陈旧的导出Excel方式,提供读写Microsoft Excel格式档案的功能。

             2. XSSFWorkbook时版本比较新的导出Excel方式,提供读写Microsoft Excel OOXML格式档案的功能。

             3. HSSFWorkbook基类与XSSFWorkbook基类jar包区别及使用方法:

    参考文献:http://blog.csdn.net/szwangdf/article/details/39053859

     

     

    ①   当我们只要使用xls格式时、只要导入poi-version-yyyymmdd.jar就可以了。

    ②   当我们还要使用xlsx格式、还要导入poi-ooxml-version-yyyymmdd.jar。

    ③   至于poi-ooxml-schemas-version-yyyymmdd.jar这个jar基本不太会用到的。

    ④   当我们需要操作word、ppt、viso、outlook等时需要用poi-scratchpad-version-yyyymmdd.jar。

    友情提示jar包下载地址:http://poi.apache.org/download.html

             4.关于两者性能差异(参考文献: http://poi.apache.org/spreadsheet/index.html)
      如果你仅仅是阅读的电子表格数据,然后使用eventmodel api org.apache.poi.hssf。eventusermodel包,或org.apache.poi.xssf。eventusermodel方案,根据您的文件格式。
      如果你修改电子表格数据然后使用usermodel api。你也可以生成电子表格。
      注意usermodel系统内存占用高于eventusermodel的低水平,但的主要优点是简单得多。也请注意,新XSSF Excel 2007支持OOXML(.xlsx)文件是基于XML的,处理他们的内存占用高于老HSSF支持(xls)二进制文件。下面是一张来自官方的性能比较图表:

     

    5. 升级过程注意事项:

    (1)关于基类及子类方法名称(HSSF替换为XSSF)

    (2)关于单元格合并,不少以HSSFWorkbook为基类的包含导出功能的项目,有些使用了

    Region类(在POI3.8中已经被废弃),其中Region类为新版本已废弃的类其参数列表与新版的CellRangeAddress类有区别,具体区别如下:

    区别

    Region

    CellRangeAddress

    参数列表

    (int firstRow,
    int firstCol,

    int lastRow,

    int lastCol

    )

    (int firstRow,

    int lastRow,

    int firstCol,

    int lastCol

    )

    参数列表详情

    参数1:行号 参数2:起始列号 参数3:行号 参数4:终止列号

    参数1:起始行 参数2:终止行 参数3:起始列 参数4:终止列

    (3)关于基类构造参数(参考文献http://poi.apache.org/apidocs/)

    HSSFWorkbook和XSSFWorkbook这两者都可以接收文件输入流但是略有不同:

    ①   HSSFWorkbook(new POIFSFileSystem(fileURL))可以接收该流√

    ②   XSSFWorkbook(new POIFSFileSystem(fileURL))不可以接收该流×(整改方案将POIFSFileSystem改为OPCPackage(无需new,其open()方法可以打开一个Inputstream))

    详情区别可以参见Apache官网http://poi.apache.org/apidocs/

    6. 对于升级过程简单粗暴的总结

                       (1)引入jar包

                       (2)buildPath

    (3)copy一份基于HSSFWorkbook的类

    (4)Ctrl+F查找替换(查找HSSF替换为XSSF)

    (5)按需修改一些特殊的方法及参数列表(例如CellRangeAddress)

    (6)因不同项目所使用的方法不同,可能升级过程会产生这样或那样的错误,只针对个别方法按照高版本的参数列表及功能需求做调整即可。

    友情提示:一般常见错误:导出后Excel报错(提示已删除部分合并的单元格之类的提示),需要逐一对照生成Excel过程代码,对于重复合并的逻辑改写,XSSFWorkbook对于重复合并时不被允许的。

    (7)大概就这么写写,特殊情况,特殊对待。

  • 相关阅读:
    XMLHttpRequest 跨域问题
    jQuery+AJAX实现纯js分页功能
    PHP验证码
    PHP基础
    UIView易忽略点
    UITableView  优化
    SpringBoard界面层级结构分析
    给App在“设置”中添加选项(类似招行App)
    通过USB线SSH登陆到越狱手机上(命令行模式的),不通过wifi
    在IOS项目中使用Lua
  • 原文地址:https://www.cnblogs.com/dreamzhiya/p/4955865.html
Copyright © 2011-2022 走看看