NPOI随笔——单元格样式CellStyle问题

摘要:
1、 问题描述:NPOI用于根据设置的Excel模板导出数据。根据不同的数据样式,某些单元格样式需要不同。因此,单元样式将在代码中更改。代码示例如下:ICellStyleCellStyle=null;stringstrDataFormat=“#,##0.00”;//显示第千位保留两位小数IDataFormatformatNum=单元格。一行床单工作簿。创建

  一、问题描述

  使用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;

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

  NPOI随笔——单元格样式CellStyle问题第1张

  二、问题分析

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

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

免责声明:文章转载自《NPOI随笔——单元格样式CellStyle问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Spring 定时器android studio 将自己的项目生成jar包下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Excel统计函数COUNTIF()的常规用法介绍

大神链接: Excel统计函数COUNTIF()的常规用法介绍(自己整理的)http://club.excelhome.net/thread-1169705-1-1.html(出处: ExcelHome技术论坛) Excel统计函数COUNTIF()的常规用法介绍   COUNTIF函数常规用法一   基本简介作用 用来计算区域中满足给定条件的单...

关于 NPOI 导出的 Excel 出现“部分内容有问题” 的解决方法

近期发现使用 NPOI导出的 Excel文件,有部分用户反映在打开时报错,测试了一下,发现在低版本的 Office中(2003版,配合2007格式兼容包)打开正常,但在高版本 Office中,会报以下错误: 发现“XXX.xlsx”中的部分内容有问题。是否让我们尽量尝试恢复?如果您信任此工作簿的源,请单击“是”。 点击 “否”就不打开文件了,点击 “是”之...

字符串与模式匹配算法(六):Needleman–Wunsch算法

一、Needleman-Wunsch 算法尼德曼-翁施算法(英语:Needleman-Wunsch Algorithm)是基于生物信息学的知识来匹配蛋白序列或者DNA序列的算法。这是将动态算法应用于生物序列的比较的最早期的几个实例之一。该算法是由 Saul B. Needlman和 Christian D. Wunsch 两位科学家于1970年发明的。本算...

戳进来呗!五分钟就学会Python3怎么修改Excel数据(xlwt使用)

上次我们看过了xlrd的使用方法,那么怎么对Excel执行修改操作的?对于旧版的Excel文件我们用xlwt,但是对于新版的xlsx文件,使用openpyxl更合适一些。xlwt的使用比较简单,我们赶快开始学习吧 安装 安装和xlrd一样,pip install xlwt 创建对象 workbook = xlwt.Workbook() 创建表单对象 我们...

Excel随机生成批量日期,以及注意事项

这个是WPS里写的一个函数,用来随机生成日期。首先E1和E2是两个日期端点,右键把单元格格式先设置成“日期”中的“xxxx年xx月xx日 xx:xx”,然后E3=E1-E2算出它们的距离。 在E4里面,写如图的函数=$E$1-RANBETWEEN(0,$E$3),直接翻译过来就是,E4单元格的值等于E1的值-(0到E3之间的随机值)。这里之所以不直接用E...

NPOI Word表格参照模板行按记录数量新增行

因为记录数量多,如果以原来模板行做深拷贝会很慢,所以直接去循环模板行拿结构再新增行。 参考链接:https://www.cnblogs.com/binye/articles/9351041.html CT_Row ctrow = row.GetCTRow(); table.RemoveRow(table.Rows.IndexOf(row)); //先移除模...