当前位置: 首页 > wzjs >正文

网站建设推广公司哪家好家装设计师电话

网站建设推广公司哪家好,家装设计师电话,wordpress如何显示摘要,网站做flash好不好EasyExcel使用导出模版后在CellWriteHandler的afterCellDispose方法设置 CellStyle失效问题解决方法 问题描述:excel 模版塞入数据后,需要设置单元格的个性化设置时失效,本文以设置数据格式为例(设置列的数据展示时需要加上千分位…

EasyExcel使用导出模版后在CellWriteHandler的afterCellDispose方法设置 CellStyle失效问题解决方法

问题描述:excel 模版塞入数据后,需要设置单元格的个性化设置时失效,本文以设置数据格式为例(设置列的数据展示时需要加上千分位分隔符)
在这里插入图片描述

1. 无效的解决方案:

在afterCellDispose中通过重新设置 cell 的 CellStyle 来设置 DataFormat,此时可以打印 cell的值和 DataFormat 发现与我们设置的一样,但是导出时就是没有生效。
注意:由于我使用了 easyexcel 中的横向填充数据,所以我将数据全部设置为 String 对应 Excel 中的 String,在下面代码中我删除了部分定制化的逻辑,仅仅只展示如何为本质是 Number的String数据加上DataFormat。

@Slf4j
public class SignAmtCustTypeMergeStrategy implements CellWriteHandler {@Overridepublic void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,List<WriteCellData<?>> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {if (cellType == CellType.STRING) {String stringCellValue = cell.getStringCellValue();if (StringUtils.isNotEmpty(stringCellValue)) {try {Workbook workbook = writeSheetHolder.getSheet().getWorkbook();CellStyle newStyle = workbook.createCellStyle();CellStyle originalStyle = cell.getCellStyle();if (originalStyle != null) {newStyle.cloneStyleFrom(originalStyle);}newStyle.setDataFormat(IntegerEnum.FOUR.getValue().shortValue());cell.setCellStyle(newStyle);BigDecimal bigDecimal = new BigDecimal(stringCellValue);cell.setCellValue(bigDecimal.doubleValue());} catch (Exception e){}}}}
}

2. 解决方案:

在执行writeCellData.setWriteCellStyle(writeCellStyle);前后可以对比下面的区别writeCellStyle
在这里插入图片描述

  • 具体的区别见下图:index=4代表的是BuiltinFormats的 "#,##0.00",格式。
    在这里插入图片描述在这里插入图片描述
@Slf4j
public class SignAmtCustTypeMergeStrategy implements CellWriteHandler {@Overridepublic void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,List<WriteCellData<?>> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {if (cellType == CellType.STRING) {String stringCellValue = cell.getStringCellValue();if (StringUtils.isNotEmpty(stringCellValue)) {try {BigDecimal bigDecimal = new BigDecimal(stringCellValue);cell.setCellValue(bigDecimal.doubleValue());if (!cellDataList.isEmpty()) {WriteCellData<?> writeCellData = cellDataList.get(0);WriteCellStyle writeCellStyle = new WriteCellStyle();DataFormatData dataFormatData = new DataFormatData();dataFormatData.setIndex(IntegerEnum.FOUR.getValue().shortValue());writeCellStyle.setDataFormatData(dataFormatData);writeCellData.setWriteCellStyle(writeCellStyle);}} catch (Exception e){}}}}
}

注意:如果你在执行前你的 cell 数据就是 Number 则不需要执行BigDecimal bigDecimal = new BigDecimal(stringCellValue); cell.setCellValue(bigDecimal.doubleValue());这两行逻辑,如果你想让 String 转 Number并设置DataFormat 则需要设置这段,具体原因还不太清楚,但是不设置DataFormat设置会失败。(有懂得友友可以评论下~~~)

http://www.dtcms.com/wzjs/782756.html

相关文章:

  • 厦门网站建设方案书淘宝网网页版登录平台
  • 百度地图放到网站上做网站怎么实现鼠标经过图像
  • 网站推广沈阳搜索引擎优化免费
  • 南昌做网站的公司哪家好wordpress访问显示502
  • 网站开发软件dw德州购物网站建设
  • 南皮网站建设外贸谷歌推广怎么样
  • 建筑企业招聘网站做电影网站用什么软件叫什么名字吗
  • 手机网站的特点京东app下载安装官网免费下载
  • 营销型网站主页定制临淄信息网招聘
  • 中卫网站设计公司排名济南国迅网站建设公司怎么样
  • 建设网站有什么网站自驾游网站建设
  • 做国外贸易的网站网站建设数据库是什么意思
  • 哪些网站做面试题陕西省建设银行网站
  • 如何更新网站快照html5网站制作培训
  • 西宁公司做网站wordpress 文章页面模板
  • 做网站销售工资wordpress企业站源码
  • 做微信的网站wordpress 潜在威胁
  • 唐山做网站的男女一起做暖暖网站
  • 中国建设银行嵊州市支行网站龙岩搜索引擎推广
  • 团购网站制作做ppt会去什么网站找图
  • 做网站必要吗h5开发游戏
  • 网站开发 成都农村pc网站开发
  • 个人博客网站怎么建立厦门网站建设平台
  • 营销策略英文石家庄百度推广排名优化
  • 域名备案关闭网站太原建站模板大全
  • 网站版式设计深圳外贸建网站
  • 做网站一般费用多少云开发低码
  • 网站优化公司 网络服务foxplayer wordpress
  • wordpress站点很慢在线评审wordpress
  • 莆田中小企业网站制作搜狗seo软件