在使用NPOI写入Excel文件的时候出现“它已经超出最多允许的字体数”,查询资料发现是字体创建太多的原因,需要将常用字体创建好,传入CellStyle中。参考(http://www.cnblogs.com/sxdcgaq8080/p/7686895.html)

同时在修改的过程中,设置CellStyle出现了同一行设置不同的单元格格式,但是最后一整行的单元格样式都和最后一个设置的一样的问题。原因是获取cell.CellStyle直接进行设置,这时获取的全局默认的CellStyle也就影响到了其他单元格获取CellStyle进行设置,这就导致最后一个单元格设置的格式成为整行单元格的格式。参考(http://www.cnblogs.com/kingsleylam/p/5361365.html)

一下给我一个在我工程中为了解决这个问题实现的简单的类,用于在当前Workbook中获取设置好的字体和单元格样式:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel; namespace GenerateResult
{
class CellStyleHandle2
{
IWorkbook workBook ;
IFont defaultFont;
ICellStyle defaultCellStyle;
ICellStyle defaultCellStyleCenter;
ICellStyle defaultCellStyleRight; IFont defaultFontColor;//蓝色
ICellStyle defaultCellStyleRightColor;//蓝色 public CellStyleHandle2(IWorkbook workBook)
{
this.workBook = workBook;
} public IFont getDefaultFont()
{
if (null == defaultFont)
{
defaultFont = workBook.CreateFont();//内容输出用
//设置字体加粗样式
defaultFont.FontName = "宋体";
defaultFont.IsBold = false;
defaultFont.FontHeightInPoints = ;
defaultFont.Color = ;
}
return defaultFont;
} public ICellStyle getDefaultCellStyle()
{
if (null == defaultCellStyle)
{
defaultCellStyle = workBook.CreateCellStyle();
defaultCellStyle.Alignment = HorizontalAlignment.Left;
defaultCellStyle.VerticalAlignment = VerticalAlignment.Center;
defaultCellStyle.WrapText = true; ////使用SetFont方法将字体样式添加到单元格样式中
defaultCellStyle.SetFont(getDefaultFont());
}
return defaultCellStyle;
} public ICellStyle getDefaultCellStyleCenter()
{
if (null == defaultCellStyleCenter)
{
defaultCellStyleCenter = workBook.CreateCellStyle();
defaultCellStyleCenter.Alignment = HorizontalAlignment.Center;
defaultCellStyleCenter.VerticalAlignment = VerticalAlignment.Center;
defaultCellStyleCenter.WrapText = true; ////使用SetFont方法将字体样式添加到单元格样式中
defaultCellStyleCenter.SetFont(getDefaultFont());
}
return defaultCellStyleCenter;
} public ICellStyle getDefaultCellStyleRight()
{
if (null == defaultCellStyleRight)
{
defaultCellStyleRight = workBook.CreateCellStyle();
defaultCellStyleRight.Alignment = HorizontalAlignment.Right;
defaultCellStyleRight.VerticalAlignment = VerticalAlignment.Center;
defaultCellStyleRight.WrapText = true; ////使用SetFont方法将字体样式添加到单元格样式中
defaultCellStyleRight.SetFont(getDefaultFont());
}
return defaultCellStyleRight;
} public IFont getDefaultFontColor()
{
if (null == defaultFontColor)
{
defaultFontColor = workBook.CreateFont();//内容输出用
//设置字体加粗样式
defaultFontColor.FontName = "宋体";
defaultFontColor.IsBold = false;
defaultFontColor.FontHeightInPoints = ;
defaultFontColor.Color = ;
}
return defaultFontColor;
} public ICellStyle getDefaultCellStyleRightColor()
{
if (null == defaultCellStyleRightColor)
{
defaultCellStyleRightColor = workBook.CreateCellStyle();
defaultCellStyleRightColor.Alignment = HorizontalAlignment.Right;
defaultCellStyleRightColor.VerticalAlignment = VerticalAlignment.Center;
defaultCellStyleRightColor.WrapText = true; ////使用SetFont方法将字体样式添加到单元格样式中
defaultCellStyleRightColor.SetFont(getDefaultFontColor());
}
return defaultCellStyleRightColor;
}
}
}

只针对当前Workbook有效。

C# 使用NPOI出现超过最大字体数和单元格格式变成一样的解决的更多相关文章

  1. POI中设置Excel单元格格式样式(居中,字体,边框等)

    创建sheet什么的就不多说了,直接进入正题 HSSFCellStyle cellStyle = wb.createCellStyle();   一.设置背景色: cellStyle.setFillF ...

  2. 【POI】使用POI 创建生成XLS,打开xls文件提示【此文件中某些文本格式可能已经更改,因为它已经超出最多允许的字体数。】

    使用POI 创建生成XLS,打开xls文件提示[此文件中某些文本格式可能已经更改,因为它已经超出最多允许的字体数.] 原因: 是因为在POI处理xls的过程中,太多次调用了: HSSFFont fon ...

  3. Excel,此文件中的某些文本格式可能已经更改,因为它已经超出最多允许的字体数。

    既然是超出最多允许的字体数,那么就不要循环创建IFont.先创建一个IFont font=wk.CreateFont();后面都使用它即可.

  4. oracle超过最大游标数异常分析(转贴)

    问题描述 Oracle 使用 OPEN_CURSORS 参数指定一个会话一次最多可以打开的游标的数量.超过此数量时,Oracle 将报告 ORA-01000 错误.当此错误传播到 WebLogic S ...

  5. springBoot使用PageHelper当超过最大页数后仍然返回数据

    在SpringBoot中使用PageHelper分页插件时,如果设置pagehelper.reasonable=true时,pageNum<=0 时会查询第一页, pageNum>page ...

  6. Vue:列表展开和收起(超过一定行数时显示‘查看更多’按钮)

    前言:前端小白记录的一些小功能~ 公司开发中的小程序中有做任务签到的功能,这就涉及到了任务列表以及对任务列表的展开和收起功能,好了可以开始了,说多了就烦了 1.首先是css样式,因为设计稿上是超过两行 ...

  7. html5文本超过指定行数隐藏显示省略号

    这个很简单,直接贴代码就好了 HTML <span class="name">博客园是一个面向开发者的知识分享社区.自创建以来,博客园一直致力并专注于为开发者打造一个纯 ...

  8. fullpage 单屏高度超过屏幕高度,实现单屏内可以滚动并解决手机端单屏高度不正确的问题

    最近接触了好几次jquery.fullpage.js这个插件,实现整屏的滑动,效果很炫,用fullpage来实现也很简单,但是也碰到了一些问题和大家分享一下 1.单屏高度超过屏幕高度,实现单屏的滑动 ...

  9. 【转载】jxl操作excel 字体 背景色 合并单元格 列宽等 .

    package com.email.jav; import java.io.File;import java.io.IOException;import java.net.URL; import jx ...

随机推荐

  1. High Availability手册(3): 配置

    各种配置在命令行状态下,多用crm进行 Global Cluster Options 这个类型是全局配置,主要包含下面两个: no-quorum-policy quorum的意思是最低法定人数,pac ...

  2. 如何利用GitHub搜索敏感信息

    如何利用GitHub搜索敏感信息 背景: 最近总是能听到同事说在GitHub上搜到某个敏感信息,然后利用该信息成功的检测并发现某个漏洞,最后提交到对应的SRC(安全应急响应中心)换点money.顿时心 ...

  3. SUSE12Sp3安装配置.net core 生产环境(1)-IP,DNS,网关,SSH,GIT

    1.新增用户 sudo useradd 用户名 sudo passwd 用户名 这个时候会提示你输入密码,输入两次密码即可 2.静态 IP 设置 1.设置 IP 地址 sudo vi /etc/sys ...

  4. [Swift]LeetCode1022. 从根到叶的二进制数之和 | Sum of Root To Leaf Binary Numbers

    Given a binary tree, each node has value 0 or 1.  Each root-to-leaf path represents a binary number ...

  5. WebWorker与WebSocket实现前端消息总线

    Web Worker让JS有了多线程的能力,可以将复杂耗时的操作都交付给Worker线程处理.WebSocket让web端与服务端维持一个有效的长连接,实现服务端主动推送数据.将二者一结合,业务系统信 ...

  6. Mysql数据库和表的增删改查以及数据备份&恢复

    数据库 查看所有数据库 show databases; 使用数据库 use 数据库名; 查看当前使用的数据库 select database(); 创建数据库 create database 数据库名 ...

  7. Ceres配置(vs2013+Win10)

    主要参考文:Ceres Solver 在Windows下安装配置笔记 eigen.gflags.glog.suitesparse按照上面的链接中的指导配置即可. 配置ceres的时候,按照上面的链接内 ...

  8. C# 多线程学习笔记 - 3

    本文主要针对 GKarch 相关文章留作笔记,仅在原文基础上记录了自己的理解与摘抄部分片段. 遵循原作者的 CC 3.0 协议. 如果想要了解更加详细的文章信息内容,请访问下列地址进行学习. 原文章地 ...

  9. Python内置函数(26)——globals

    英文文档: globals() Return a dictionary representing the current global symbol table. This is always the ...

  10. Java代码复用的三种常用方式:继承、组合和代理

    复用代码是Java众多引人注目的功能之一.这句话很通顺,没什么问题,但问题在于很多人并不清楚“复用”是什么.就好像我说“沉默王二是一个不止会写代码的程序员”,唉,沉默王二是谁? 我们需要来给“复用”下 ...