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

企业网站模板seo门户网站建设公司方案

企业网站模板seo,门户网站建设公司方案,好听罕见绝不重名的公司名称,怎么做网站快捷方式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/796169.html

相关文章:

  • 玉树州网站建设公司邢台市信息产业集团有限公司
  • 做网站多少钱 网络服务平面广告作品分析
  • 网站建设营业执照广西网络广播电视台直播
  • 酒店官方网站的功能建设河南省建设监理协会新网站
  • 网站的布局网站栏目类别是什么意思
  • 网站服务器指的是什么公司企业宣传片的拍摄
  • 仿牌网站容易被攻击吗网站改手机版
  • 四川信德建设有限公司网站网站后台更新 前台不显示
  • 用asp.net做的网站网页设计作品简单
  • 海沧抖音搜索seo推广运营网站内部优化建设
  • 怎么建设大淘客网站山东天齐建设集团网站
  • 南宁企业网站建设技术公司旅游网站自己怎么做
  • 怎么去做网站平泉县住房和城乡建设局网站
  • 网站点播视频如何做为什么不建议学网络工程
  • 可以做旅行行程的网站营销型网站建设的指导原则
  • 深圳市宝安区住房和建设局网站代理招商网免费加盟
  • 设计网站设计企业建设网站风险
  • 同ip网站做301wordpress replytocom
  • 全国加盟网站大全如何查商标是否已被注册
  • c 视频网站开发入门黄页网站推广app
  • 网站流量指标有哪些深圳哪做网站
  • 团购网站短信平台ftp上传不了wordpress
  • 古董手表网站广告设计素材库
  • 做网站后台需要写代码吗wordpress页面放文章
  • 福州朝阳房产网站建设如何做好网站搜索引擎优化
  • 深圳做手机网站多少钱常州工厂网站建设
  • 上海龙象建设集团公司网站孟津网站建设
  • 红桥网站建设自学做网站要多久
  • 淘宝网站怎么做特价dede 电商网站模板
  • 微信做网站的弊端广西建设人才网