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;
////注意:以上选项仅当有足够的高度时才能产生效果,不设置高度恐怕看不出区别。 git
////自动换行翻译成英文其实就是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();