C# 使用NPOI出现超过最大字体数和单元格格式变成一样的解决
在使用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出现超过最大字体数和单元格格式变成一样的解决的更多相关文章
- POI中设置Excel单元格格式样式(居中,字体,边框等)
创建sheet什么的就不多说了,直接进入正题 HSSFCellStyle cellStyle = wb.createCellStyle(); 一.设置背景色: cellStyle.setFillF ...
- 【POI】使用POI 创建生成XLS,打开xls文件提示【此文件中某些文本格式可能已经更改,因为它已经超出最多允许的字体数。】
使用POI 创建生成XLS,打开xls文件提示[此文件中某些文本格式可能已经更改,因为它已经超出最多允许的字体数.] 原因: 是因为在POI处理xls的过程中,太多次调用了: HSSFFont fon ...
- Excel,此文件中的某些文本格式可能已经更改,因为它已经超出最多允许的字体数。
既然是超出最多允许的字体数,那么就不要循环创建IFont.先创建一个IFont font=wk.CreateFont();后面都使用它即可.
- oracle超过最大游标数异常分析(转贴)
问题描述 Oracle 使用 OPEN_CURSORS 参数指定一个会话一次最多可以打开的游标的数量.超过此数量时,Oracle 将报告 ORA-01000 错误.当此错误传播到 WebLogic S ...
- springBoot使用PageHelper当超过最大页数后仍然返回数据
在SpringBoot中使用PageHelper分页插件时,如果设置pagehelper.reasonable=true时,pageNum<=0 时会查询第一页, pageNum>page ...
- Vue:列表展开和收起(超过一定行数时显示‘查看更多’按钮)
前言:前端小白记录的一些小功能~ 公司开发中的小程序中有做任务签到的功能,这就涉及到了任务列表以及对任务列表的展开和收起功能,好了可以开始了,说多了就烦了 1.首先是css样式,因为设计稿上是超过两行 ...
- html5文本超过指定行数隐藏显示省略号
这个很简单,直接贴代码就好了 HTML <span class="name">博客园是一个面向开发者的知识分享社区.自创建以来,博客园一直致力并专注于为开发者打造一个纯 ...
- fullpage 单屏高度超过屏幕高度,实现单屏内可以滚动并解决手机端单屏高度不正确的问题
最近接触了好几次jquery.fullpage.js这个插件,实现整屏的滑动,效果很炫,用fullpage来实现也很简单,但是也碰到了一些问题和大家分享一下 1.单屏高度超过屏幕高度,实现单屏的滑动 ...
- 【转载】jxl操作excel 字体 背景色 合并单元格 列宽等 .
package com.email.jav; import java.io.File;import java.io.IOException;import java.net.URL; import jx ...
随机推荐
- [Swift]LeetCode252.会议室 $ Meeting Rooms
Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si ...
- MySQL面试必考知识点:揭秘亿级高并发数据库调优与最佳实践法则
做业务,要懂基本的SQL语句: 做性能优化,要懂索引,懂引擎: 做分库分表,要懂主从,懂读写分离... 数据库的使用,是开发人员的基本功,对它掌握越清晰越深入,你能做的事情就越多. 今天我们用10分钟 ...
- Java高级开发工程师面试笔记
最近在复习面试相关的知识点,然后做笔记,后期(大概在2018.02.01)会分享给大家,尽自己最大的努力做到最好,还希望到时候大家能给予建议和补充 ----------------2018.03.05 ...
- .NET Core实战项目之CMS 第五章 入门篇-Dapper的快速入门看这篇就够了
写在前面 上篇文章我们讲了如在在实际项目开发中使用Git来进行代码的版本控制,当然介绍的都是比较常用的功能.今天我再带着大家一起熟悉下一个ORM框架Dapper,实例代码的演示编写完成后我会通过Git ...
- shell的exec命令
工作中遇到运维人员挂supervisor的时候建议启动使用命令control.sh start, 并且在control.sh 里面启动命令: exec -c ./bin/xxx -f config/x ...
- 从.Net到Java学习第二篇——IDEA and start spring boot
从.Net到Java学习第一篇——开篇 所谓工欲善其事,必先利其器,做java开发也一样,在比较了目前最流行的几个java IDE(eclipse,myeclipse.IDEA)之后,我果断选择IDE ...
- redis 系列10 字符串对象
一. 字符串对象编码 Redis中字符串可以存储3种类型,分别是字节串(byte string).整数.浮点数.在上章节中讲到字符串对象的编码可以是int, raw,embstr. 如果一个字符串对象 ...
- 使用 Jaeger 完成服务间的链路追踪
世上本没有路,走的人多了,便变成了路 -- 鲁迅 本次讨论的话题就是需要在各个服务之间踏出条"路",让问题有"路"可循. 至于为什么用 jaeger.. ...
- 免费报名 | 腾讯云自研数据库CynosDB交流会
本文由云+社区发表 作者:技术沙龙 All in 云+时代,数据库的高可用性.按需付费.按需扩展等属性解放了大批开发者.腾讯发布的自研数据库CynosDB作为国内首款同时兼容MySQL和PG的云原生数 ...
- Docker系列03—Docker 基础入门
本文收录在容器技术学习系列文章总目录 1.概念介绍 1.1 容器 1.1.1 介绍 容纳其它物品的工具,可以部分或完全封闭,被用于容纳.储存.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. ...