β

用NPOI给Excel单元格设置样式也可以用CSS啦

衣明志的技术博客 196 阅读

年底了,客户的项目也跟催命似得,其中一个需求是要根据数据分析生成一堆复杂样式的Excel报表。在服务器端生成报表,如果是用COM调用Excel软件生成xls文件是一个很差的想法:

.NET上有不少第三方库可以生成Excel,但个人最喜欢NPOI.这个库其实是从JAVA的POI项目上搬过来的,API已经非常成熟。NPOI国内外的用户都挺多,文档资料也容易找。用NPOI生成xls文件,非常爽,可以用模板也可以从头开始写,性能和稳定性也都非常好,尤其2.0后的版本性能改进很大。但是我们的客户Excel样式实在是太花哨了,各种风格几乎不带重样的,同事仅为样式设定就差点在代码中崩溃,于是我决定让他们爽一下,给他们造个利器——可以象写CSS一样给单元格(Cell)设置各种样式和数据格式,减轻他们的负担提高工作效率,也提升代码可读性。于是经过一整夜的奋斗,打造出了第一个内部试用版,得到同事们的喜好,我很欣慰。

同事使用过程中,我发现了一些小的bug和问题,于是再次改进,并考虑兼容2.0.6,还有提供缩写csskey。经过几次对字体和样式数量限制的碰底和解决,终于觉得可以公开给大家使用了。至少让喜欢css的同学们,可以用相对熟悉和熟练的类似语法设置excel单元格样式。

基本用法就是:

1.首先引用NPOI.CSS的dll

2.在代码中引用NPOI.CSS命名空间

using NPOI.CSS;

3.对ICell对象使用CSS扩展方法设置样式

cell.CSS("color:red;font-weight:bold;font-size:11;font-name:宋体;border-type:thin;")

CSS方法返回的依然是ICell,所以大家可以用流式写法继续对该对象进行设置,或者常用于设置值。

由于采用了一点特殊手段,解决了一些样式管理的问题,所以目前仅支持.NET4的项目,还在用.NET2或者3.5的同学们对不住了 :(

项目源代码目前托管在GitHub上,相关细节大家可以移步去看一下 NPOI.CSS ,有任何问题可以在本文下面的评论中留言探讨,谢谢。