今天做公司项目时用到根据模版导出EXCEL时无意发现了一个BUG,因为EXCEL模版是2003的,因此采用POI的HSSF实现,在模版上面如果有批注的话,那么调用sheet.shiftRow(startRow,endRow,n)方法时会抛出异常,不知道官方有没有注意到
我的模版是这样的
具体贴一下代码报错位置:如要插入行,必须调用 shiftRows这个方法
系统会采用HSSFSheet调用重载方法
shiftRows(startRow, endRow, n, copyRowHeight, resetOriginalRowHeight, true);
其中最后一个参数为moveComments默认为true标识,标识如果EXCEL上有批注默认跟着移动
异常具体位置:
程序走到这里时会调用HSSFComment 内置对象NoteRecord(批注对象)来获取相应的行数,此时行数移动后批注对象为空,一旦获取行数,就报空指针异常,不知道算不算一个重大BUG