原文地址:http://hi.baidu.com/linrao/item/fadf96dce8770753d63aaef2

HSSFWorkbook hssfworkbook = new HSSFWorkbook();//初始化一个新的HSSFWorkbook实例

//#region 1.创建一个空的Excel   
            ////*************************************创建一个空的Excel******************************************   
            ////HSSFSheet sheet = hssfworkbook.CreateSheet("new sheet");   
            ////hssfworkbook.CreateSheet("Sheet1");//必须加入创建Sheet的代码才能保证生成的文件正常(如果需要多个,用同样的方法,换个名字就可以了)   
            //#endregion

//#region 2.创建单元格   
            ////*************************************创建单元格******************************************   
            ////要创建单元格首先要创建单元格所在的行,比如,下面的代码创建了第0行:   
            //HSSFSheet sheet = hssfworkbook.CreateSheet("Sheet1");   
            //HSSFRow row1=sheet.CreateRow(0);//设置单元格行位置   
            ////行建好了,就可以建单元格了,比如创建A1位置的单元格:   
            //row1.CreateCell(0).SetCellValue("Just for Test");//设置单元格列位置,并填写参数   
            ////这里要说明一下,SetCellValue有好几种重载,你可以设置单元格为bool、double、DateTime、string和HSSFRichTextString类型。   
            ////其中对于string类型的重载调用的就是HSSFRichTextString类型的重载,所以是一样的,HSSFRichTextString可用于有字体或者Unicode的文本。

////如果你觉得每一行要声明一个HSSFRow很麻烦,可以用下面的方式:   
            ////sheet1.CreateRow(0).CreateCell(0).SetCellValue("This is a Sample");   
            ////这么用有个前提,那就是第0行还没创建过,否则得这么用:   
            ////sheet1.GetRow(0).CreateCell(0).SetCellValue("This is a Sample");   
            ////注意:这里的行在Excel里是从1开始的,但是NPOI内部是从0开始的;   
            ////列在Excel里面是用字母表示的,而NPOI中也是用从0开始的数字表示的,所以要注意转换。   
            ////如果你要获得某一个已经创建的单元格对象,可以用下面的代码:   
            ////sheet1.GetRow(row_index).GetCell(column_index);   
            //#endregion

//#region 3.创建批注   
            ////**************************************创建批注******************************************   
            ////批注的位置和大小,在Excel中是与单元格密切相关的,NPOI中通过HSSFClientAnchor的实例来表示,它的构造函数比较复杂,有8个参数,它们分别是   
            ////dx1 第1个单元格中x轴的偏移量    
            ////dy1 第1个单元格中y轴的偏移量    
            ////dx2 第2个单元格中x轴的偏移量    
            ////dy2 第2个单元格中y轴的偏移量    
            ////col1 第1个单元格的列号    
            ////row1 第1个单元格的行号    
            ////col2 第2个单元格的列号    
            ////row2 第2个单元格的行号

////如果我们打算让注释显示在B3和E5之间,就应该这么写:   
            //HSSFPatriarch patr = sheet.CreateDrawingPatriarch();   
            //HSSFComment comment1 = patr.CreateComment(new HSSFClientAnchor(0, 0, 0, 0, 1, 2 , 4, 4));   
            ////下面我们设置这个批注的内容和作者,这个比较简单:   
            //comment1.String = new HSSFRichTextString("Hello World");   
            //comment1.Author = "NPOI Team";   
            ////最后一步就是把批注赋给某个单元格:   
            //HSSFCell cell = sheet.CreateRow(1).CreateCell(0);   
            //cell.CellComment = comment1;   
            ////对于批注,你有两种选择,一种是隐藏(默认),一种是显示(即表单一打开就显示该批注),可以通过comment1.Visible属性来控制。   
            //#endregion

//#region 4.设置单元格格式   
            ////**************************************设置单元格格式******************************************   
            ////使用NPOI时要注意,所有的格式都是通过CellStyle.DataFormat赋给单元格的,而不是直接赋给单元格。

////案例一 日期格式   
            ////假设我们现在需要显示的日期的格式为2008年5月5日,可以用下面的代码生成:   
            ////HSSFSheet sheet1 = hssfworkbook.CreateSheet("new sheet");   
            //HSSFCell cell0 = sheet.CreateRow(2).CreateCell(0);   
            //cell0.SetCellValue(new DateTime(2008,5,5));   
            ////set date format   
            //HSSFCellStyle cellStyle = hssfworkbook.CreateCellStyle();   
            //HSSFDataFormat format = hssfworkbook.CreateDataFormat();   
            //cellStyle.DataFormat = format.GetFormat("yyyy年m月d日");   
            //cell0.CellStyle=cellStyle;   
            ////由于这里的“yyyy年m月d日”属于自定义格式(区别于Excel内嵌的格式),   
            ////所以必须用hssfworkbook.CreateDataFormat()创建一个HSSFDataFormat实例,然后使用format.GetFormat来获取相应的格式,   
            ////只要是Excel支持的格式表示方式,这种方式都能够实现。

////案例二 保留2位小数   
            ////假设我们有个单元格的值为1.2,怎么显示成1.20呢?在Excel中可以用“0.00”来表示,所以下面的代码就能完成:   
            //// Create a row and put some cells in it. Rows are 0 based.   
            //HSSFCell cell1 = sheet.CreateRow(2).CreateCell(1);   
            ////set value for the cell   
            //cell1.SetCellValue(1.2);   
            ////number format with 2 digits after the decimal point - "1.20"   
            //HSSFCellStyle cellStyle1 = hssfworkbook.CreateCellStyle();   
            //cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");   
            //cell.CellStyle = cellStyle;   
            ////这里与上面有所不同,用的是HSSFDataFormat.GetBuiltinFormat()方法,之所以用这个,是因为0.00是Excel内嵌的格式,   
            ////完整的Excel内嵌格式列表大家可以看EXCEL---设置单元格格式------数字

////案例三 货币格式   
            ////货币格式在金融的项目中经常用到,比如说人民币符号¥,美元符号$等,这里可以用下面的代码表示:   
            //HSSFCell cell2 = sheet.CreateRow(2).CreateCell(2);   
            //cell2.SetCellValue(20000);   
            //HSSFCellStyle cellStyle2 = hssfworkbook.CreateCellStyle();   
            //HSSFDataFormat format2 = hssfworkbook.CreateDataFormat();   
            //cellStyle2.DataFormat = format.GetFormat("¥#,##0");   
            //cell2.CellStyle = cellStyle2;   
            ////注意,这里还加入了千分位分隔符,所以是#,##,至于为什么这么写,你得去问微软,呵呵。

////案例四 百分比   
            ////百分比在报表中也很常用,其实基本上和上面一样,只是格式表示是0.00%,代码如下:   
            //HSSFCell cell3 = sheet.CreateRow(2).CreateCell(3);   
            //cell3.SetCellValue(50);   
            //HSSFCellStyle cellStyle3 = hssfworkbook.CreateCellStyle();   
            //cellStyle3.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00%");   
            //cell3.CellStyle = cellStyle3;   
            ////由于这里是内嵌格式,所以直接用HSSFDataFormat.GetBuiltinFormat即可。

////案例五 中文大写   
            ////在表示金额时,我们时常会用到,我也见过不少兄弟实现了数字转中文大小写的工具类,以后你可以尝试让Excel去处理这一切,   
            ////代码和刚才差不多,也是改格式的表示:   
            //HSSFCell cell4 = sheet.CreateRow(2).CreateCell(4);   
            //cell4.SetCellValue("共和国");   
            //HSSFCellStyle cellStyle4 = hssfworkbook.CreateCellStyle();   
            //HSSFDataFormat format4 = hssfworkbook.CreateDataFormat();   
            //cellStyle4.DataFormat = format.GetFormat("[DbNum2][$-804]0");   
            //cell4.CellStyle = cellStyle4;   
            ////由于是自定义格式,所以用了HSSFDataFormat.GetFormat,相信你对这两种获取格式的形式的区别越来越熟悉了。

////案例六 科学计数法   
            ////这东西数学课上我们都学过,虽然用的不多,但是既然Excel支持,这里也提一下:   
            ////cellStyle3.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00E+00");

///*最后总结一下HSSFDataFormat.GetFormat和HSSFDataFormat.GetBuiltinFormat的区别:

//当使用Excel内嵌的(或者说预定义)的格式时,直接用HSSFDataFormat.GetBuiltinFormat静态方法即可。

//当使用自己定义的格式时,必须先调用HSSFWorkbook.CreateDataFormat(),因为这时在底层会先找有没有匹配的内嵌FormatRecord,   
            //如果没有就会新建一个FormatRecord,所以必须先调用这个方法,然后你就可以用获得的HSSFDataFormat实例的GetFormat方法了,   
            //当然相对而言这种方式比较麻烦,所以内嵌格式还是用HSSFDataFormat.GetBuiltinFormat静态方法更加直接一些。   
            //不过自定义的格式也不是天马行空随便定义,还是要参照Excel的格式表示来定义,具体请看相关的Excel教程。

//注意:自定义的FormatRecord是嵌入xls文件内部的,所以不用担心对方Excel中有没有定义过这种格式,都是能够正常使用的。   
            // */   
            //#endregion

//#region 5.单元格合并   
            ////*************************************单元格合并******************************************   
            ////为了实现这一功能,NPOI引入了新的概念,即Region,因为合并单元格,其实就是设定一个区域。下面说一下Region类的参数,Region总共有4个参数:   
            ////FirstRow 区域中第一个单元格的行号    
            ////FirstColumn 区域中第一个单元格的列号    
            ////LastRow 区域中最后一个单元格的行号    
            ////LastColumn 区域中最后一个单元格的列号

////由于单元格的合并都是在表的基础上建立的,所以我们得先建Sheet:   
            ////HSSFWorkbook hssfworkbook = new HSSFWorkbook();   
            //HSSFSheet sheet5 = hssfworkbook.CreateSheet("单元格合并");   
            ////接下来我们根据实际场景来做一些演示。

////场景一 标题行的合并   
            ////这种场景是最常见的,比如说我们要建立一张销售情况表,英文叫Sales Report   
            ////我们先设置居中和字体样式,这里我们采用20号字体,代码如下:   
            //HSSFRow row5 = sheet5.CreateRow(0);   
            //HSSFCell cell5 = row5.CreateCell(0);   
            //cell5.SetCellValue("Sales Report");   
            //HSSFCellStyle style5 = hssfworkbook.CreateCellStyle();   
            //style5.Alignment = HSSFCellStyle.ALIGN_CENTER;   
            //HSSFFont font5 = hssfworkbook.CreateFont();   
            //font5.FontHeight = 20*20;   
            //style5.SetFont(font5);   
            //cell5.CellStyle = style5;   
            ////要产生图中的效果,即把A1:F1这6个单元格合并,然后添加合并区域:   
            //sheet5.AddMergedRegion(new Region(0, 0, 0, 5));

////场景二 多行合并   
            ////看完场景一,你可不要认为多行合并就需要一行一行做,其实也只需要一行代码,比如说我们要把C3:E5合并为一个单元格,那么就可以用下面的代码:   
            //sheet5.AddMergedRegion(new Region(2, 2, 4, 4));   
            ////提示 即使你没有用CreateRow和CreateCell创建过行或单元格,也完全可以直接创建区域然后把这一区域合并,   
            ////Excel的区域合并信息是单独存储的,和RowRecord、ColumnInfoRecord不存在直接关系。   
            //#endregion

//#region 6.单元格对齐相关设置   
            ////*************************************单元格对齐相关设置******************************************   
            ////本节将围绕“对齐”选项卡中的设置展开,虽然实际上你会发现该选项卡中的很多设置和对齐没有什么关系。   
            ////首先我们用代码创建必要的单元格,代码如下:   
            ////HSSFWorkbook hssfworkbook = new HSSFWorkbook();   
            //HSSFSheet sheet6 = hssfworkbook.CreateSheet("单元格对齐相关设置");   
            //HSSFRow row6 = sheet6.CreateRow(0);   
            //row6.CreateCell(0).SetCellValue("Test");   
            ////这里我们假设在A0单元格中加入了文本Test。   
            ////请注意接下来我们要做的所有操作都是在CellStyle的基础上完成的,所以我们创建一个HSSFCellStyle:   
            //HSSFCellStyle style6 = hssfworkbook.CreateCellStyle();

////水平对齐   
            ////这里用的是HSSFCellStyle.Alignment,默认值自然是常规,即HSSFCellStyle.ALIGN_GENERAL。   
            ////如果是左侧对齐就是   
            //style6.Alignment = HSSFCellStyle.ALIGN_LEFT;   
            ////如果是居中对齐就是   
            //style6.Alignment = HSSFCellStyle.ALIGN_CENTER;   
            ////如果是右侧对齐就是   
            //style6.Alignment = HSSFCellStyle.ALIGN_RIGHT;   
            ////如果是跨列举中就是   
            //style6.Alignment = HSSFCellStyle.ALIGN_CENTER_SELECTION;   
            ////如果是两端对齐就是   
            //style6.Alignment = HSSFCellStyle.ALIGN_JUSTIFY;   
            ////如果是填充就是   
            //style6.Alignment = HSSFCellStyle.ALIGN_Fill;   
            ////注意:以上选项仅当有足够的宽度时才能产生效果,不设置宽度恐怕看不出区别。

////垂直对齐   
            ////这里用的是HSSFCellStyle.VerticalAlignment,默认值为居中,即HSSFCellStyle.VERTICAL_CENTER   
            ////如果是靠上就是   
            //style6.VerticalAlignment = HSSFCellStyle.VERTICAL_TOP;   
            ////如果是居中就是   
            //style6.VerticalAlignment = HSSFCellStyle.VERTICAL_CENTER;   
            ////如果是靠下就是   
            //style6.VerticalAlignment = HSSFCellStyle.VERTICAL_BOTTOM;   
            ////如果是两端对齐就是   
            //style6.VerticalAlignment = HSSFCellStyle.VERTICAL_JUSTIFY;   
            ////注意:以上选项仅当有足够的高度时才能产生效果,不设置高度恐怕看不出区别。

     ////自动换行   
            ////自动换行翻译成英文其实就是Wrap的意思,所以这里我们应该用WrapText属性,这是一个布尔属性   
            //style6.WrapText = true;

////文本缩进   
            ////这是一个不太引人注意的选项,所以这里给张图出来,让大家知道是什么,缩进说白了就是文本前面的空白,我们同样可以用属性来设置,   
            ////这个属性叫做Indention。   
            //style6.Indention = 3;

////文本旋转   
            ////文本方向大家一定在Excel中设置过,上图中就是调整界面,主要参数是度数,那么我们如何在NPOI中设置呢?  
            //style6.Rotation=(short)90;   
            ////以上代码是把单元格A1中的文本逆时针旋转90度   
            ///*   
            // * 请注意,这里的Rotation取值是从-90到90,而不是0-180度。   
            // * 最后别忘了把样式变量style赋给HSSFCellStyle.CellStyle,否则就前功尽弃了,呵呵!   
            // * **/   
            //#endregion

//#region 7.设置单元格边框   
            ////*************************************设置单元格边框******************************************   
            ////边框和其他单元格设置一样也是在HSSFCellStyle上操作的,HSSFCellStyle有2种和边框相关的属性,分别是:   
            ////边框相关属性 说明 范例    
            ////Border+方向 边框类型 BorderTop, BorderBottom,BorderLeft, BorderRight    
            ////方向+BorderColor 边框颜色 TopBorderColor,BottomBorderColor, LeftBorderColor, RightBorderColor

////其中边框类型分为以下几种:   
            ////边框范例图 对应的静态值    
            //// HSSFCellStyle.BORDER_DOTTED    
            //// HSSFCellStyle.BORDER_HAIR    
            //// HSSFCellStyle.BORDER_DASH_DOT_DOT    
            //// HSSFCellStyle.BORDER_DASH_DOT    
            //// HSSFCellStyle.BORDER_DASHED    
            //// HSSFCellStyle.BORDER_THIN    
            //// HSSFCellStyle.BORDER_MEDIUM_DASH_DOT_DOT    
            //// HSSFCellStyle.BORDER_SLANTED_DASH_DOT    
            //// HSSFCellStyle.BORDER_MEDIUM_DASH_DOT    
            //// HSSFCellStyle.BORDER_MEDIUM_DASHED    
            //// HSSFCellStyle.BORDER_MEDIUM    
            //// HSSFCellStyle.BORDER_THICK    
            //// HSSFCellStyle.BORDER_DOUBLE    
            ////至于颜色那就很多了,全部在HSSFColor下面,如HSSFColor.GREEN, HSSFColor.RED,都是静态实例,可以直接引用。   
            ////下面我们假设我们要把一个单元格的四周边框都设置上,可以用下面的代码:

//HSSFSheet sheet7 = hssfworkbook.CreateSheet("设置单元格边框");   
            //// Create a row and put some cells in it. Rows are 0 based.   
            //HSSFRow row7 = sheet7.CreateRow(1);   
            //// Create a cell and put a value in it.   
            //HSSFCell cell7 = row7.CreateCell(1);   
            //// Style the cell with borders all around.   
            //HSSFCellStyle style7 = hssfworkbook.CreateCellStyle();   
            //style7.BorderBottom= HSSFCellStyle.BORDER_THIN;   
            //style7.BorderLeft= HSSFCellStyle.BORDER_THIN;   
            //style7.BorderRight= HSSFCellStyle.BORDER_THIN;   
            //style7.BorderTop = HSSFCellStyle.BORDER_THIN ;   
            //cell7.CellStyle= style7;   
            ////这段代码使用了最普通的细边框,使得这个单元格看上去像块空心砖头。   
            ////注意:这里我们没有设置边框的颜色,但这不会影响最终的效果,因为Excel会用默认的黑色给边框上色。   
            ////如果要设置颜色的话,也很简单,如下:   
            //style7.BottomBorderColor = HSSFColor.GREEN.index;   
            ////以上代码将底部边框设置为绿色,要注意,不是直接把HSSFColor.GREEN赋给XXXXBorderColor属性,而是把index的值赋给它。   
            //#endregion

//#region 8.设置单元格字体   
            ////*************************************设置单元格字体******************************************   
            ////本节我们将继续使用NPOI来设置单元格格式,这一节我们主要讲如何设置“字体”。   
            ////在设置字体之前,我们首先要做的就是创建字体对象,这和创建数字格式很相似。

//HSSFFont font8 = hssfworkbook.CreateFont();   
            ////这句话会在Excel文件内部创建相应的FontRecord,所以你不用客户因为自己机器上的Excel没有相应的字体设置而导致设置丢失。

////字体在设置完成后,我们就可以把它赋给单元格样式,代码如下:   
            //HSSFSheet sheet8 = hssfworkbook.CreateSheet("设置单元格字体");   
            //HSSFRow row8 = sheet8.CreateRow(0);   
            //HSSFCell cell8 = row8.CreateCell(0);   
            //HSSFCellStyle style8 = hssfworkbook.CreateCellStyle();   
            //style8.SetFont(font8);   
            //cell8.CellStyle=style8;   
            ////这里的cell1是HSSFCell的一个实例。

////好了,下面我们就开始对字体进行设置。   
            ////字体名称

////这里的字体名称是通过HSSFFont.FontName进行设置的,至于具体的名称,只要是常用字体都可以,比如说Arial, Verdana等   
            ////,当然也可以是中文字体名,如宋体、黑体等。不过设置字体名称有个前提,那就是假设打开这个xls文件的客户机上有这种字体   
            ////,如果没有,Excel将使用默认字体。   
            ////下面就是设置字体名称为“宋体”的代码:   
            //font8.FontName = "宋体";

////字号   
            ////与字号有关的属性有两个,一个是FontHeight,一个是FontHeightInPoints。区别在于,FontHeight的值是FontHeightInPoints的20倍   
            ////,通常我们在Excel界面中看到的字号,比如说12,对应的是FontHeightInPoints的值,而FontHeight要产生12号字体的大小   
            ////,值应该是240。所以通常建议你用FontHeightInPoint属性。   
            ////如果要设置字号为12,代码就是   
            //font8.FontHeightInPoints = 12;

////字体颜色   
            ////这里可能会与CellStyle上的ForegroundColor和BackgroundColor产生混淆,其实所有的字体颜色都是在HSSFFont的实例上设置的   
            ////,CellStyle的ForegroundColor和BackgroundColor分别指背景填充色和填充图案的颜色,和文本颜色无关。   
            ////要设置字体颜色,我们可以用HSSFFont.Color属性,颜色可以通过HSSFColor获得,代码如下所示:   
            //font8.Color = HSSFColor.RED.index;   
            ////这行代码把文本设置为红色。

////下划线   
            ////通常我们所说的下划线都是单线条的,其实Excel支持好几种下划线,如下所示:   
            ////类型 对应的值    
            ////单下划线 HSSFFont.U_SINGLE    
            ////双下划线 HSSFFont.U_DOUBLE    
            ////会计用单下划线 HSSFFont.U_SINGLE_ACCOUNTING    
            ////会计用双下划线 HSSFFont.U_DOUBLE_ACCOUNTING    
            ////无下划线 HSSFFont.U_NONE    
            ////当你要设置下划线时,可以用HSSFFont.Underline属性,这是一个byte类型的值,例如   
            //font8.Underline = HSSFFont.U_SINGLE;   
            ////这行代码就是设置单下划线的代码。

////上标下标   
            ////设置这东西可以用HSSFFont.TypeOffset属性,值有以下几种:   
            ////TypeOffset的值 说明    
            ////HSSFFont.SS_SUPER 上标    
            ////HSSFFont.SS_SUB 下标    
            ////HSSFFont.SS_NONE 普通,默认值    
            ////所以如果你要上标的话,可以用下面的代码:   
            //font8.TypeOffset=HSSFFont.SS_SUPER;

////删除线   
            ////设置这东西可以用HSSFFont.IsStrikeout属性,当为true时,表示有删除线;为false则表示没有删除线。   
            //#endregion

//#region 9.设置单元格的背景和图案   
            ////*************************************设置单元格的背景和图案******************************************   
            ////在之前的教程中,我们已经提到HSSFCellStyle有两个背景颜色属性,一个叫FillBackgroundColor,另一个叫FillForegroundColor   
            ////,但其实这指的都是背景颜色,那为什么还有ForegroundColor呢?为了能够帮助大家理解,我们举一个实际的例子   
            ////,下面这个图案是Excel的一个单元格:(白线红格的网格)   
            ////线是白色的,背景是红色的。这里的线其实就是下面的Excel界面中的图案:   
            ////至于线的颜色则是图案颜色,即白色。   
            ////所以以上单元格如果要用NPOI来设置就可以用以下代码完成:   
            ////fill background   
            //HSSFSheet sheet9 = hssfworkbook.CreateSheet("设置单元格的背景和图案");   
            //HSSFCellStyle style9 = hssfworkbook.CreateCellStyle();   
            //style9.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.WHITE.index;   
            //style9.FillPattern = HSSFCellStyle.SQUARES;   
            //style9.FillBackgroundColor = NPOI.HSSF.Util.HSSFColor.RED.index;   
            //sheet9.CreateRow(7).CreateCell(0).CellStyle = style9;   
            ////现在是不是清楚一些了,这里的FillPattern就图案样式,所有的枚举值都是HSSFCellStyle的常量;FillForegroundColor就是图案的颜色   
            ////,而FillBackgroundColor则是背景的颜色,即红色。   
            //#endregion

//#region 10.设置单元格的宽度和高度   
            ////*************************************设置单元格的宽度和高度******************************************   
            ////在Excel中,单元格的宽度其实就是列的宽度,因为Excel假设这一列的单元格的宽度肯定一致。所以要设置单元格的宽度   
            ////,我们就得从列的宽度下手,HSSFSheet有个方法叫SetColumnWidth,共有两个参数:一个是列的索引(从0开始),一个是宽度。   
            ////现在假设你要设置B列的宽度,就可以用下面的代码:   
            ////HSSFWorkbook hssfworkbook = new HSSFWorkbook();   
            //HSSFSheet sheet10 = hssfworkbook.CreateSheet("设置单元格的宽度和高度");   
            //sheet10.SetColumnWidth(1, 100 * 256);   
            ////这里你会发现一个有趣的现象,SetColumnWidth的第二个参数要乘以256,这是怎么回事呢?其实,这个参数的单位是1/256个字符宽度   
            ////,也就是说,这里是把B列的宽度设置为了100个字符。   
            ////刚才说的是如何设置,那如何去读取一个列的宽度呢?直接用GetColumnWidth方法,这个方法只有一个参数,那就是列的索引号。如下所示:   
            //int col1width = sheet10.GetColumnWidth(1);   
            ////说完宽度,我们来说高度,在Excel中,每一行的高度也是要求一致的,所以设置单元格的高度,其实就是设置行的高度   
            ////,所以相关的属性也应该在HSSFRow上,它就是HSSFRow.Height和HeightInPoints,这两个属性的区别在于HeightInPoints的单位是点   
            ////,而Height的单位是1/20个点,所以Height的值永远是HeightInPoints的20倍。   
            ////要设置第一行的高度,可以用如下代码:   
            //sheet10.CreateRow(0).Height = 200*20;   
            ////或者   
            //sheet10.CreateRow(0).HeightInPoints = 200;   
            ////如果要获得某一行的行高,可以直接拿HSSFRow.Height属性的返回值。   
            ////你可能觉得一行一行设置行高或者一列一列设置列宽很麻烦,那你可以考虑使用HSSFSheet.DefaultColumnWidth   
            ////、HSSFSheet.DefaultRowHeight和HSSFSheet.DefaultRowHeightInPoints属性。   
            ////一旦设置了这些属性,如果某一行或者某一列没有设置宽度,就会使用默认宽度或高度。代码如下:   
            //sheet10.DefaultColumnWidth=100*256;   
            //sheet10.DefaultRowHeight=30*20;   
            //#endregion

////把HSSFWorkbook实例写入文件   
            //FileStream file = new FileStream(Server.MapPath("test.xls"), FileMode.Create);   
            //hssfworkbook.Write(file);   
            //file.Close();

//*************************************基于模板******************************************   
            //read the template via FileStream, it is suggested to use FileAccess.Read to prevent file lock.   
            //book1.xls is an Excel-2007-generated file, so some new unknown BIFF records are added.    
            FileStream file11 = new FileStream(Server.MapPath("PayMain.xls"), FileMode.Open, FileAccess.Read);

HSSFWorkbook hssfworkbook11 = new HSSFWorkbook(file11);   
            HSSFSheet sheet11 = hssfworkbook11.GetSheet("Sheet2");   
            HSSFCellStyle style11 = hssfworkbook11.CreateCellStyle();   
            style11.BorderBottom = HSSFCellStyle.BORDER_THIN;   
            style11.BorderLeft = HSSFCellStyle.BORDER_THIN;   
            style11.BorderRight = HSSFCellStyle.BORDER_THIN;   
            style11.BorderTop = HSSFCellStyle.BORDER_THIN;   
            HSSFRow row11;   
            for (int i = 0; i < dt.Rows.Count; i++)   
            {   
                row11 = sheet11.CreateRow(7 + i);   
                for (int j = 0; j < 6; j++)   
                {   
                    HSSFCell cell11 = row11.CreateCell(j);   
                    cell11.SetCellValue(dt.Rows[i][j].ToString());   
                    cell11.CellStyle = style11;   
                }   
            }

row11 = sheet11.CreateRow(dt.Rows.Count + 7);   
            HSSFCell cell11_ = row11.CreateCell(0);   
            cell11_.SetCellValue("合计:");   
            cell11_ = row11.CreateCell(3);   
            cell11_.SetCellValue("建表人:");   
            //HSSFRow row11 = sheet11.CreateRow(7);   
            //HSSFCell cell10 = row11.CreateCell(0);   
            //HSSFCell cell11 = row11.CreateCell(1);   
            //HSSFCell cell12 = row11.CreateCell(2);   
            //HSSFCell cell13 = row11.CreateCell(3);   
            //HSSFCell cell14 = row11.CreateCell(4);   
            //HSSFCell cell15 = row11.CreateCell(5);   
            //cell10.SetCellValue("tessssss");   
            //cell11.SetCellValue("teffffff");   
            //cell12.SetCellValue("tegggggsss");   
            //cell13.SetCellValue("tesssssfwefsss");   
            //cell14.SetCellValue("tesssssfwefsss");   
            //cell15.SetCellValue("tesssssfwefsss");   
            //sheet11.GetRow(9).GetCell(0).SetCellValue(300);   
            //sheet11.GetRow(10).GetCell(1).SetCellValue(500050);   
            //sheet11.GetRow(11).GetCell(1).SetCellValue(8000);   
            //sheet11.GetRow(12).GetCell(1).SetCellValue(110);   
            //sheet11.GetRow(13).GetCell(1).SetCellValue(100);   
            //sheet11.GetRow(14).GetCell(1).SetCellValue(200);   
            //sheet11.GetRow(15).GetCell(1).SetCellValue(210);   
            //sheet11.GetRow(16).GetCell(1).SetCellValue(2300);   
            //sheet11.GetRow(17).GetCell(1).SetCellValue(240);   
            //sheet11.GetRow(18).GetCell(1).SetCellValue(180123);   
            //sheet11.GetRow(19).GetCell(1).SetCellValue(150);

//Force excel to recalculate all the formula while open   
            Response.ContentType = "application/vnd.ms-excel";   
            Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", "T3"));   
            Response.Clear();

DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();   
            dsi.Company = "NPOI Team";   
            hssfworkbook.DocumentSummaryInformation = dsi;

////create a entry of SummaryInformation   
            SummaryInformation si = PropertySetFactory.CreateSummaryInformation();   
            si.Subject = "NPOI SDK Example";   
            hssfworkbook11.SummaryInformation = si;

MemoryStream file = new MemoryStream();   
            hssfworkbook11.Write(file);   
            Response.BinaryWrite(file.GetBuffer());   
            Response.End();

//sheet11.ForceFormulaRecalculation = true;    
            //FileStream file111 = new FileStream(Server.MapPath("T2.xls"), FileMode.Create);    
            //hssfworkbook11.Write(file111);   
            //file111.Close();

[转]NPOI 单元格级别应用的更多相关文章

  1. 【转】NPOI 单元格级别应用

    NPOI 单元格级别应用A HSSFWorkbook hssfworkbook = new HSSFWorkbook();//初始化一个新的HSSFWorkbook实例 //#region 1.创建一 ...

  2. NPOI 单元格(cell) 格式参数

    NPOI 单元格(cell) 将格式设为文本 在网上找了很久,都没有关于如何设置的信息,没办法查了下NPOI的源码终于找到了方法.这里共享下,就是“@”参数 ICellStyle cellStyle ...

  3. NPOI2.2.0.0实例详解(十)—设置EXCEL单元格【文本格式】 NPOI 单元格 格式设为文本 HSSFDataFormat

    NPOI2.2.0.0实例详解(十)—设置EXCEL单元格[文本格式] 2015年12月10日 09:55:17 阅读数:3150 using System; using System.Collect ...

  4. 转载 NPOI Excel 单元格背景颜色对照表

    NPOI Excel 单元格颜色对照表,在引用了 NPOI.dll 后可通过 ICellStyle 接口的 FillForegroundColor 属性实现 Excel 单元格的背景色设置,FillP ...

  5. 转载 NPOI.dll 用法。单元格,样式,字体,颜色,行高,宽度。读写excel

    我用的版本是1.25的.每个版本用法有一点不同 using System; using System.Collections.Generic; using System.ComponentModel; ...

  6. NPOI操作EXCEL(五)——含合并单元格复杂表头的EXCEL解析

    我们在第三篇文章中谈到了那些非常反人类的excel模板,博主为了养家糊口,也玩命做出了相应的解析方法... 我们先来看看第一类复杂表头: ...... 博主称这类excel模板为略复杂表头模板(蓝色部 ...

  7. NPOI导出数据,设置格式,锁定单元格

    代码包括: 1:导出多个sheet    2:设置单元格格式   3:合并单元格   4:下拉框选项   5:输入数字限制   6:锁定单元格 static void Main(string[] ar ...

  8. NPOI 自定义单元格背景颜色-Excel

    NPOI针对office2003使用HSSFWorkbook,对于offce2007及以上使用XSSFWorkbook:今天我以HSSFWorkbook自定义颜色为例说明,Office2007的未研究 ...

  9. NPOI 教程 - 2.1单元格合并

    来源:http://liyingchun343333.blog.163.com/blog/static/3579731620091018212990/ 合并单元格在制作表格时很有用,比如说表格的标题就 ...

随机推荐

  1. AppStore审核

    应用被拒分为两种:Binary Rejected 和 Metadata Rejected.前者需要重新上传应用并且重新排队,后者只需要修改信息,不需要重新上传应用. 1.应用内包含检查更新功能 iOS ...

  2. Rearrange a string so that all same characters become d distance away

    Given a string and a positive integer d. Some characters may be repeated in the given string. Rearra ...

  3. Run P4 without P4factory - A Simple Example In Tutorials. -2 附 simple_router源码

    /* Copyright 2013-present Barefoot Networks, Inc. Licensed under the Apache License, Version 2.0 (th ...

  4. Thinking in Java——笔记(9)

    Polymorphism Abstract classes and methods If you have an abstract class, objects of that specific cl ...

  5. 【五子棋AI循序渐进】——多线程搜索

    关于多线程搜索,有很多方法来实现,很多文章推荐基于MTD(F)的方式.好处不言而喻,不过我的程序中采用的是基于PVS的多线程搜索.实现起来主要是这几个方面问题需要解决: 1.置换表的互斥访问. 2.局 ...

  6. NET 框架基本原理透析⑵

    生成.打包.部署及管理应用程序与类型 要生成就离不开程,序集,程序集是包含一个或多个类型定义文件和资源文件的集合.在程序集包含的所有文件中,有一个文件用于保存清单.清单是另外一组元数据表的集合,其中主 ...

  7. JS之获取样式

    基本代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  8. SQL2008关于quotename的用法

    ),) set @tbname='index' ---查这个表里的数据: print(@tbname) set @sql = 'select * from '+QUOTENAME(@tbname) p ...

  9. oracle导入imp导出exp命令的简单使用

    1.登录: 原始: 用户名:sys 密 码:安装oracle设置的口令 数据库:ip:port/数据库名(默认是orcl) 连接为:SYSDBA 用户: 用户名:safe_csmp 密 码:safe_ ...

  10. iOS一些系统事件的生命周期

    1.- (void)applicationWillResignActive:(UIApplication *)application 说明:当应用程序将要入非活动状态执行,在此期间,应用程序不接收消息 ...