在使用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. [BlueZ] 1、Download install and use the BlueZ and hcitool on PI 3B+

    星期日, 02. 九月 2018 11:58下午 - beautifulzzzz 1. Introduction Bluez is the default Bluetooth protocol sta ...

  2. eclipse集成lombok

    第一部下载 lombok jar包 https://projectlombok.org/download.html lombok下载地址,进入该网址后可以看到如下界面,点击下载就行了.   下载 ja ...

  3. 剖析项目多个logback配置(下)

    来源:http://www.cnblogs.com/guozp/p/5973038.html 上篇大概描述了logback的加载顺序以及加载的源码,本篇将分析如果在你的Maven或者其他多模块的项目中 ...

  4. .NET Core实战项目之CMS 第三章 入门篇-源码解析配置文件及依赖注入

    作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/9998021.html 写在前面 上篇文章我给大家讲解了ASP.NET Core的概念及为什么使用它,接着 ...

  5. 说一说MVC的Authentication过滤(四)

    前沿: 一般情况下,在我们做访问权限管理的时候,会把用户的正确登录后的基本信息保存在Session中,以后用户每次请求页面或接口数据的时候,拿到 Session中存储的用户基本信息,查看比较他有没有登 ...

  6. docker~在centos容器中安装新程序

    上一篇我们使用了阿里加速器安装了centos镜像,然后创建了一个新容器,运行了这个镜像,这一讲我们来为这个镜像添加一些应用程序,然后再保存容器,push容器到仓储,大家就可以直接pull我生产的容器了 ...

  7. SpringBoot+gradle项目构建war

    前言 一开始觉得这并不是什么很难的事情,但是踩坑了之后才发现... 步骤 1.在build.gradle配置文件中加入apply plugin: 'war' 很多人以为这样就完事了,我一开始也是这样认 ...

  8. ThreadLocal使用和原理简析

    1. 解决共享资源冲突 对于并发工作,需要某种方式来防止两个任务同时访问相同的资源,至少在关键阶段不能出现这种冲突情况. 方法之一就是当资源被一个任务使用时,在其上加锁.第一个访问某项资源的任务必须锁 ...

  9. springboot+mybatis+dubbo+aop日志终结篇

    之前的几篇文章把dubbo服务层都介绍完毕,本篇文章咱们主要写web层如何调用服务层的方法.文章底部附带源码. 启动服务 服务启动时,会向zk注册自己提供的服务,zk则会记录服务提供者的IP地址以及暴 ...

  10. AJAX应用【股票案例、验证码校验】

    一.股票案例 我们要做的是股票的案例,它能够无刷新地更新股票的数据.当鼠标移动到具体的股票中,它会显示具体的信息. 我们首先来看一下要做出来的效果: 1.1服务器端分析 首先,从效果图我们可以看见很多 ...