zoukankan      html  css  js  c++  java
  • NPOI随笔——单元格样式CellStyle问题

      一、问题描述

      使用NPOI根据设定好的Excel模板导出数据,有些单元格样式需要根据数据的不同样式也不一样,因此在代码里会更改单元格样式,代码示例如下:

      ICellStyle CellStyle = null;
      string strDataFormat = "#,##0.00";//显示千分位保留两位小数
      IDataFormat formatNum = cell.Row.Sheet.Workbook.CreateDataFormat();
      formatNum = cell.Row.Sheet.Workbook.CreateDataFormat();
      CellStyle = cell.Row.Sheet.Workbook.CreateCellStyle();//创建单元格样式
      CellStyle.CloneStyleFrom(cell.CellStyle);//复制单元格样式
      CellStyle.DataFormat = formatNum.GetFormat(strDataFormat);//在原有样式不变的基础上,将单元格格式修改成千分位保留两位小数
      cell.CellStyle = CellStyle;

      如此导出之后出现的结果是有些单元格样式不见了,如下图所示:

      

      二、问题分析

       导致出现这种单元格样式不生效的原因: 每个单元格样式都是使用新创建CreateCellStyle(),单元格样式创建后会放到workbook队列中维护,最多只能创建4000个样式,因此超过了就不会创建,后面的单元格就没有样式,前面的单元格样式却正常。

      解决方式:可以使用集合Dictionary或List将生成的单元格样式缓存起来,如果遇到同样的单元格样式,则不重复创建,直接从缓存里取。

    
    
    
  • 相关阅读:
    js获取当前网址Url
    ajax解决跨域问题
    微信小程序传递URL中含有特殊字符
    layui中的tab切换
    layer.confirm等事件X关闭与取消监听
    Java中的API方法总结
    sublime安装插件
    LNMP的基本配置
    LNMP环境的搭建
    LAMP安装细则
  • 原文地址:https://www.cnblogs.com/xbzsz/p/8052790.html
Copyright © 2011-2022 走看看