NPOI 2.0 教程(三):EXCEL 基本格式设置之ICellStyle

转载请注明出处 http://blog.csdn.net/fujie724


前两篇,我们已经学习了如何用NPOI来创建和编辑Excel,并且已经熟悉了HSSFWorkbookISheetIRowICell

接下来我们把它变得漂亮一点。


ICellStyle——单元格样式

当我们拥有了一个HSSFWorkbook实例之后。我们可以通过下面的方式来创建一个样式变量。

HSSFWorkbook wk = new HSSFWorkbook();//你用来操作的HSSFWorkbook的实例
ICellStyle cellStyle = wk.CreateCellStyle();

这样我们就创建好了一个样式变量。

  • 注意:
  • 创建样式是基于HSSFWorkbook而不是ISheet

这个ICellStyle里有些什么属性可以设置呢?


没错,所有你能想到的对于单元格的格式样式的设置都在里面。种类非常多,命名也比较直白,比如:对齐方式,上下左右边框线的颜色和样式,字体等等。

写个例子给大家看看。

ICellStyle cellStyle = wk.CreateCellStyle();
//设置单元格上下左右边框线
cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
//文字水平和垂直对齐方式
cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
cellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
//是否换行
//cellStyle.WrapText = true;
//缩小字体填充
cellStyle.ShrinkToFit = true;

大部分的设置都有相应的枚举类型可以选择,比如这个边框样式Thin,实际上就是我们最常见的单线最细的那种边框,你也可以根据需要设置成虚线,点线,双线等等。

  • 注意:
  • “是否换行”和“缩小字体填充”本身是互斥的两个设置,如果同时设为True,则只有“是否换行”会生效。


设置好了格式变量,就可以把它应用到单元格上去。通过对ICell的CellStyle赋值实现。

ICell Cell = sheet.CreateRow(0).CreateCell(0);
Cell.CellStyle = cellStyle;
Cell.SetCellValue("测试格式效果");

设置格式就是这么简单。


你可能会问了,如果我需要设置一大片的单元格都是这个格式,该不会要一个一个的设置吧?

很悲催的告诉你,没错,目前暂未发现有直接批量设置格式的方法。不过考虑到本身你也需要一个一个去创建Cell,所以顺便赋值上去也不是什么很麻烦的事情。

  • 提到ICellStyle就不能不提到一个需要注意的地方:
  • 通过某些现象我们曾经观察到,ICellStyle的创建是有数量限制的,换句话说,一个Excel文件里负责保存样式的空间是有限的,样式也占用一定的文件大小。
  • 那么我们就应该注意样式的重复利用,相同的样式尽量不要创建两份,直接赋值同一个就可以了,在编写代码的时候注意样式变量的作用域。

对于只有少部分不相同的样式,我们可以使用CloneStyleFrom()方法来克隆前一个样式,而只修改需要修改的部分,减少重复代码。

ICellStyle newCellStyle = wk.CreateCellStyle();
newCellStyle.CloneStyleFrom(cellStyle);
newCellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left;

关于ICellStyle已经讲完,希望大家喜欢。下一篇继续讲解格式设置的其他内容。


转载请注明出处 http://blog.csdn.net/fujie724

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值