在使用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. 私有云的难处—为什么需要CloudEngine?

    私有云的难处 ——我们为什么需要 CloudEngine? 郑昀 创建于2016/7/31 最后更新于2016/8/3 关键词: 容器.Docker.OpenStack.虚拟机.私有云.Mesos.配 ...

  2. [Swift]LeetCode252.会议室 $ Meeting Rooms

    Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si ...

  3. [Swift]LeetCode611. 有效三角形的个数 | Valid Triangle Number

    Given an array consists of non-negative integers, your task is to count the number of triplets chose ...

  4. [Swift]LeetCode791. 自定义字符串排序 | Custom Sort String

    S and T are strings composed of lowercase letters. In S, no letter occurs more than once. S was sort ...

  5. [Swift]LeetCode797. 所有可能的路径 | All Paths From Source to Target

    Given a directed, acyclic graph of N nodes.  Find all possible paths from node 0 to node N-1, and re ...

  6. Java数据结构与算法 - 外部存储

    Q: 什么是外部存储? A: 外部存储特指某类磁盘系统,例如在大多数台式电脑或服务器中的硬盘. Q: 如何访问外部存储? A: 我们所学的数据结构都是假设数据存储在内存中,但是,在很多情况下要处理的数 ...

  7. VSphere虚拟化ESXi的安装及基本管理

    虚拟化和云计算技术正在快速的发展,新的概念.观点.产品不断涌现.服务器虚拟化技术受到了人们的高度重视,普遍相信虚拟化将成为数据中心的重要组成部分.vSphere是VMware公司推出的一套服务器虚拟化 ...

  8. Pytorch入门实例:mnist分类训练

    #!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'denny' __time__ = '2017-9-9 9:03' import ...

  9. 死磕 java集合之CopyOnWriteArrayList源码分析

    欢迎关注我的公众号"彤哥读源码",查看更多源码系列文章, 与彤哥一起畅游源码的海洋. 简介 CopyOnWriteArrayList是ArrayList的线程安全版本,内部也是通过 ...

  10. ASP.NET Core 四种方式绑定枚举值

    前言 本节我们来讲讲在ASP.NET Core MVC又为我们提供了哪些方便,之前我们探讨过在ASP.NET MVC中下拉框绑定方式,这节我们来再来重点看看枚举绑定的方式,充分实现你所能想到的场景,满 ...