poi基本用法(v3.15)

xlsx和xlsm区别:

xlsm中默认启动宏,而xlsx则是虽然带有宏,也不会被excel执行。

写在前头的经验教训:

1,POI-3.15的Sheet.getLastRowNum()是0-based;Row.getLastColNum()结果是1-based。

2,poi中getPhysicalNumberOfRows()和getLastRowNum()区别 :
    举例说明:修改xlsx文件后缀为rar,解压之(xlsx是ooxml格式的文件)。找到xl\worksheets\sheet*.xml文件,打开,可以看到这是一个xml文件,这时候,如果我们在其中的sheetData元素中添加一个空的<row></row>标签。
getPhysicalNumberOfRows()计算的是所有的<row>标签的总数。
getLastRowNum()计算的是所有<row>标签中r属性(行号)的最大值。
所以我们在遍历EXCEL的时候,应该使用的遍历行号上限(闭区间)是getLastRowNum().在这其中,可能会遇到Row==null的情况需要跳过。
另一方面,出于业务方向的考虑,我们一般要检查row!=null的时候一行中是否全是“空白”符号,如果全是空白符号的行一般不作为数据行分析。
3,有关格式,千万不要试图将那些线程不安全的对象作为静态常量,之前在使用jxl框架的时候,企图将格式对象作为全局静态常量,最后居然在因为线程不安全居然出现了相当摸不着头脑的bug(第一次导出成功,之后的同一导出请求的返回数据文件很可能会被损坏)。

读:

辅助类:

/**
 * @author kingbaron
 * @version 1.0
 * @date 2016/12/21
 * @package demo
 */
public class WorkbookFactory {
   

    /**
     * 读取excel输入流
     * @param ips
     * @return
     */
    public static Workbook createWorkBook(InputStream ips){
        Workbook workbook=null;
        try{
            workbook=getWorkBook(ips);
        }catch (Exception ex){
            throw new AppInternalException(
  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值