poi版本升级(3.13到4.0.1)的那些坑

前景:由于项目需要使用到poi-tl的框架,但是poi-tl最低的要求是poi3.16以上版本,但是项目的poi使用的是3.13,太旧了,索性一次性升级到了4.01版本;

变更jar包的版本,或多或少都是会有一些冲突的,如下代码:
1.设置excel样式CellStyle相关的代码:

		CellStyle titleCellStyle = workbook.createCellStyle();
        titleCellStyle.setAlignment(CellStyle.ALIGN_CENTER);
        titleCellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
        titleCellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
        titleCellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);

        titleCellStyle.setBorderBottom(CellStyle.BORDER_THIN);
        titleCellStyle.setBorderLeft(CellStyle.BORDER_THIN);
        titleCellStyle.setBorderTop(CellStyle.BORDER_THIN);
        titleCellStyle.setBorderRight(CellStyle.BORDER_THIN);

其中,CellStyle.ALIGN_CENTERCellStyle.VERTICAL_CENTERHSSFColor.GREY_25_PERCENT.indexCellStyle.SOLID_FOREGROUNDCellStyle.BORDER_THIN都会报错异常,应改为:

		CellStyle titleCellStyle = workbook.createCellStyle();
        titleCellStyle.setAlignment(HorizontalAlignment.CENTER);//水平居中
        titleCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中
        titleCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.index);//设置图案颜色
        titleCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);//设置图案样式

        titleCellStyle.setBorderBottom(BorderStyle.THIN);//下边框
        titleCellStyle.setBorderLeft(BorderStyle.THIN);//左边框
        titleCellStyle.setBorderTop(BorderStyle.THIN);//上边框
        titleCellStyle.setBorderRight(BorderStyle.THIN);//右边框

2.读取及操作excel单元格数据,对数据做类型判断时:
Cell.CELL_TYPE_STRINGHSSFCell.CELL_TYPE_NUMERICHSSFCell.CELL_TYPE_BOOLEANHSSFCell.CELL_TYPE_FORMULAHSSFCell.CELL_TYPE_BLANK
都会提示不存在,应该成对应的CellType.STRING,CellType.NUMERIC,CellType.BOOLEAN,CellType.FORMULA,CellType.BLANK;
3.excel写入图片时:

	ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();

     try {

         byteArrayOut.write(Base64.getDecoder().decode('图片base64的编码'));

         // anchor主要用于设置图片的属性
         XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 255, 255, (short) i, rowNum + 1,
                 (short) i + 1, rowNum + 2);
         anchor.setAnchorType(3);
         // 插入图片
         patriarch.createPicture(anchor,
                 workbook.addPicture(byteArrayOut.toByteArray(), ClientAnchor.MOVE_DONT_RESIZE));

     } catch (IOException e) {
         logger.error(e.getMessage(), e);
     }

代码中anchor.setAnchorType(3);
ClientAnchor.MOVE_DONT_RESIZE,报错异常,应改为:
anchor.setAnchorType(ClientAnchor.AnchorType.DONT_MOVE_AND_RESIZE);
ClientAnchor.AnchorType.MOVE_DONT_RESIZE.value;

小结,poi版本问题产生报错汇总表(后续待补充)

poi3.+版本poi4.+版本用途
Cell.CELL_TYPE_STRINGCellType.STRING单元格数据格式判断
HSSFCell.CELL_TYPE_NUMERICCellType.NUMERIC单元格数据格式判断
CellStyle.ALIGN_CENTERHorizontalAlignment.CENTER单元格水平居中
CellStyle.VERTICAL_CENTERVerticalAlignment.CENTER单元格垂直居中
HSSFColor.GREY_25_PERCENT.indexIndexedColors.GREY_25_PERCENT.index设置图案颜色
CellStyle.SOLID_FOREGROUNDFillPatternType.SOLID_FOREGROUND设置图案样式
CellStyle.BORDER_THINBorderStyle.THIN边框
ClientAnchor.MOVE_DONT_RESIZEClientAnchor.AnchorType.MOVE_DONT_RESIZE.value单元格插入图片

以上是本次poi版本升级所遇到的冲突问题,如有小伙伴也遇到了相同的问题,可以联系小弟一起学习探讨;

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值