NPOI根据Excel模板生成原生的Excel文件实例

上周完成了一个报表小项目,使用开源组件NPOI作为主要组件。之所以采用第三方的开源组件而不使用COM或微软提供的API,原因就不多说了,大家懂的。

官方网站:http://npoi.codeplex.com/

http://www.cnblogs.com/tonyqus/archive/2009/03/16/1409966.html

在此分享NPOI的一个应用,利用Excel模板生成excel文件。这正是NPOI强于Myxls之处。

具体步骤如下:

一、准备数据

复制代码
USE [ MonthReportDemo ]
GO

/* ***** Object: Table [dbo].[TradeReport] Script Date: 04/15/2011 19:10:37 ***** */
SET  ANSI_NULLS  ON
GO

SET  QUOTED_IDENTIFIER  ON
GO

IF NOT OBJECT_ID ( ' [TradeReport] ' )  IS NULL
DROP TABLE [ TradeReport ]
GO

CREATE TABLE [ dbo ] . [ TradeReport ] (
[ CurName ] [ nvarchar ] ( 255 )  NULL ,
[ PlanValue ] [ decimal ] ( 20 ,  2 )  NULL ,
[ MonthMoney ] [ decimal ] ( 38 ,  0 )  NULL ,
[ YearMoney ] [ decimal ] ( 38 ,  0 )  NULL ,
[ Year_Percent ] [ int ] NOT NULL ,
[ D_ID ] [ int ] identity ( 1 , 1 ),
constraint  PK_TradeReport  primary key clustered  ( [ D_ID ] )
)

GO

insert into  TradeReport
select ' 绍兴润和购物中心有限公司 ' , 30000.00 , 3400 , 10000 , 0
union all select ' 新农都实业有限公司 ' , 0 , 3000 , 6000 , 0
union all select ' 浙江农发市政园林工程有限公司 ' , 6000.00 , 300 , 2340 , 0

select * from  TradeReport
复制代码

 

二、新建一个项目,结构如下:

模板文件如下:

三、预览结果:

四、修正模板

重新生成:

循环每个Cell,如果为0,则置为空

复制代码
#region  Clear "0" 
System.Collections.IEnumerator rows 
=  sheet.GetRowEnumerator(); 

int  cellCount  =  headerRow.LastCellNum; 

for  ( int  i  =  (sheet.FirstRowNum  + 1 ); i  <=  sheet.LastRowNum; i ++ ) 
{ 
HSSFRow row 
=  sheet.GetRow(i); 
if  (row  != null ) 
{ 
for  ( int  j  =  row.FirstCellNum; j  <  cellCount; j ++ ) 
{ 
HSSFCell c 
=  row.GetCell(j); 
if  (c  != null ) 
{ 
switch  (c.CellType) 
{ 
case  HSSFCellType.NUMERIC: 
if  (c.NumericCellValue  == 0 ) 
{ 
c.SetCellType(HSSFCellType.STRING); 
c.SetCellValue(
string .Empty); 
} 
break ; 
case  HSSFCellType.BLANK: 

case  HSSFCellType.STRING: 
if  (c.StringCellValue  == " 0 " ) 
{ c.SetCellValue(
string .Empty); } 
break ; 

} 
} 
} 

} 

} 
#endregion
复制代码

 

其实NPOI在实际项目中可以生成更加复杂的图表,如下图:

简单示例代码下载: 
下载二

下载一

 

转自:http://www.cnblogs.com/downmoon/archive/2011/04/16/2017603.html

 

你可能感兴趣的:(Excel)