当前位置: 首页 > 科技观察

NPOI操作Excel2.创建Excel并设置样式

时间:2023-03-12 07:24:08 科技观察

由于XSSF中的XSSFWorkbook和HSSF中的HSSFWorkbook具有相同的属性和方法,所以下面举个例子作为演示,它们都继承于同一个接口:IWorkbook(namespace:usingNPOI.SS.UserModel;)1.创建工作簿IWorkbookmyHSSFworkbook=newHSSFWorkbook();//用于创建.xlsIWorkbookmyXSSFworkbook=newXSSFWorkbook();/用于创建.xlsx2,由指定名称创建SheetISheetmysheetHSSF=myHSSFworkbook.CreateSheet(“工作表名称”);3。创建RowIRowrowHSSF=mysheetHSSF.CreateRow(0);4。在Row中创建列Cell并赋值【SetCellValue有5个重载方法bool、DateTime、double、string、IRichTextString(未显示)】rowHSSF.CreateCell(0).SetCellValue(true);rowHSSF.CreateCell(1)。SetCellValue(System.DateTime.Now);rowHSSF.CreateCell(2).SetCellValue(10.13);rowHSSF。CreateCell(3).SetCellValue("学习NPOI!");5.合并单元格[CellRangeAddress(startrow,endrow,startcolumn,endcolumn)]mysheetHSSF=.AddMergedRegion(newCellRangeAddress(1,1,1,2));//将第二列的第二行单元格合并到第三列IRowSecondRowHSSF=mysheetHSSF.CreateRow(1);//添加第二行SecondRowHSSF.CreateCell(0).SetCellValue("第一列");SecondRowHSSF.CreateCell(1).SetCellValue("第二列到第三列");SecondRowHSSF.CreateCell(3).SetCellValue("第四列");6.设置列宽【SetColumnWidth(columnindex,N*256)第二个参数为列宽单位为1/256字符宽度】mysheetHSSF.SetColumnWidth(3,30*256);//设置列宽第四列为30个字符7.设置行高[Height的单位为1/20点]SecondRowHSSF.Height=50*20;//设置行高为50点8.设置单元格对齐方式1IRowThirdRowHSSF=mysheetHSSF.CreateRow(2);2ThirdRowHSSF.Height=50*20;3ThirdRowHSSF.CreateCell(0).SetCellValue("默认对齐");4ThirdRowHSSF.CreateCell(1).SetCellValue("左对齐");5ThirdRowHSSF.CreateCell(2).SetCellValue("居中");6ThirdRowHSSF.CreateCell(3).SetCellValue("右对齐");7IRowFourthRowHSSF=mysheetHSSF.CreateRow(3);8FourthRowHSSF.Height=50*20;9FourthRowHSSF.CreateCell(0).SetCellValue("填充单元格");10FourthRowHSSF.CreateCell(1).SetCellValue("shezhidanyangelianduanduiqi");11FourthRowHSSF.CreateCell(2).SetCellValue("跨列居中");12FourthRowHSSF.CreateCell(3).SetCellValue("Scattered对齐");1314//创建CellStyle15ICellStylestyle0=myHSSFworkbook.CreateCellStyle();16style0.Alignment=Horizo??ntalAlignment.General;//【General】数字和时间默认:右对齐;BOOL:默认中心;string:默认左对齐1718ICellStylestyle1=myHSSFworkbook.CreateCellStyle();19style1.Alignment=Horizo??ntalAlignment.Left;//【左】左对齐2021ICellStylestyle2=myHSSFworkbook.CreateCellStyle();22style2.Alignment=Horizo??ntalAlignment.Center;//【居中】居中2324ICellStylestyle3=myHSSFworkbook.CreateCellStyle();25style3.Alignment=Horizo??ntalAlignment.Right;//【右】右对齐2627ICellStylestyle4=myHSSFworkbook.CreateCellStyle();28style4.Alignment=Horizo??ntalAlignment.Fill;//【填充】填充2930ICellStylestylestyle5.();31style5.Alignment=Horizo??ntalAlignment.Justify;](主要针对英文)32ICellStylestyle6=myHSSFworkbook.CreateCellStyle();33style6.Alignment=Horizo??ntalAlignment.CenterSelection;//【CenterSelection】跨列居中3435ICellStylestyle7=myHSSFworkbook.CreateCellStyle();36style7.Alignment=Horizo??ntalAlignment.CenterSelection;/[Distributed】零散对齐【会自动换行】3738//【提示】39//1.通过ICellStyle的VerticalAlignment属性可以设置垂直对齐方式,水平对齐方式相同。没有更多的演示40//2。可以通过ISheet的SetDefaultColumnStyle(intcolumn,ICellStylestyle)方法设置整列的默认单元格样式;4142//将CellStyle应用于特定的单元格43ThirdRowHSSF.GetCell(0).CellStyle=style0;44ThirdRowHSSF.GetCell(1).CellStyle=style1;45ThirdRowHSSF.GetCell(2).CellStyle=style2;46ThirdRowHSSF.GetCell(3).CellStyle=style3;CellStyle=style4;49FourthRowHSSF.GetCell(1).CellStyle=style5;50FourthRowHSSF.GetCell(2).CellStyle=style6;51FourthRowHSSF.GetCell(3).CellStyle=style7;9。设置单元格背景和图案【图案填充图案这里没有演示,下图是效果图】1IRowFifthRowHSSF=mysheetHSSF.CreateRow(4);2FifthRowHSSF.CreateCell(0).SetCellValue("NoFill");3FifthRowHSSF.CreateCell(1)).SetCellValue("SolidForeground");4FifthRowHSSF。CreateCell(2).SetCellValue("FineDots");5FifthRowHSSF.CreateCell(3).SetCellValue("AltBars");67//[Tips]8//1.ForegroundColor(默认黑色)[前景颜色]BackgroundColor(默认为Inverseofforegroundcolor)[Backgroundcolor]Pattern(必须指定,默认NoFill)[Filledpattern]9//2.演示中使用【前景色】蓝色【背景色】白色1011//创建构建CellStyle并应用于单元格式12ICellStyleBlackstyle0=myHSSFworkbook.CreateCellStyle();Blackstyle0.FillBackgroundColor=IndexedColors.White.Index;13Blackstyle0.FillForegroundColor=IndexedColors.Blue.Index;Blackstyle0.FillPattern=FillGetPattern.NoifthowC;14SfillC().CellStyle=Blackstyle0;15ICellStyleBlackstyle1=myHSSFworkbook.CreateCellStyle();Blackstyle1.FillBackgroundColor=IndexedColors.White.Index;16Blackstyle1.FillForegroundColor=IndexedColors.Blue.Index;Blackstyle1.FillPattern=FillPattern.SolidForeground;17FifthRowHSSF.GetCelltyle=Black.Cell1S;18ICellStyleBlackstyle2=myHSSFworkbook.CreateCellStyle();Blackstyle2.FillBackgroundColor=IndexedColors.White.Index;19Blackstyle2.FillForegroundColor=IndexedColors.Blue.Index;Blackstyle2.FillPattern=FillPattern.FineDots;20FifthRowHSSF.GetCell(2).CellStyle2Black=ICBlackstyle2;myHSSFworkbook.CreateCellStyle();Blackstyle3.FillBackgroundColor=IndexedColors.White.Index;22Blackstyle3.FillForegroundColor=IndexedColors.Blue.Index;Blackstyle3.FillPattern=FillPattern.AltBars;23FifthRowHSSF.GetCell(3).CellStyle=Blackstyle3;10.设置单元格边框1ICellStyleBorderStyle=myworkbook.CreateCellStyle();BorderStyle.BorderBottom=Border;Style/设置单元格下边框为细线2//BorderStyle.Medium;【中线】3//BorderStyle.Dashed;【虚线】4//BorderStyle.Dotted;【虚线】5//BorderStyle.Thick;【粗[Line]6//BorderStyle.Double;[双线]7//BorderStyle.Hair;[多点线]8//BorderStyle.MediumDashed;[中虚线]9//BorderStyle.DashDot;[虚线]10//BorderStyle.MediumDashDot;[中虚线]11//BorderStyle.DashDotDot;[双点线]12//BorderStyle.MediumDashDotDot;[中双点线]13//BorderStyle.SlantedDashDot;[斜虚线]14ICellStyleBorderStyle1=myworkbook.CreateCellStyle();15BorderStyle1.BorderDiagonalLineStyle=BorderStyle.Thin;//BorderDiagonalLineStyle对角线样式Thin细线16BorderStyle1.BorderDiagonal=BorderDiagonal.Backward;//反转[Forward]17Bothlinesforward;BorderDiagonalColor=IndexedColors.Red.Index;//红线11,设置Excel字体1//设置字体样式2IFontfont=myworkbook.CreateFont();3font.Boldweight=(Int16)FontBoldWeight.Bold;//原始字体4//[Tips]5//1.粗体要使用(Int16)FontBoldWeight对应的值否则无效6font=.Color=IndexedColors.Red.Index;//设置字体颜色7font.FontHeight=17;//设置字体高度【FontHeightInPoints也设置字体高度,我还不知道区别]8font.FontName="黑体";//设置字体9font.IsBold=true;//是否加粗10font.IsItalic=true;//是否斜体11font.IsStrikeout=true;//是否加删除线12font.TypeOffset=FontSuperScript.Sub;//设置脚本上的字体[underSub;onSuper]13font.Underline=FontUnderlineType.Single;//下划线[Singleoneline;双两行]14//创建CellStyle并加载字体15ICellStyleFontstyle=myHSSFworkbook.CreateCellStyle();16Fontstyle.SetFont(font);12.设置单元格编号格式1//创建CellStyle和DataFormat并加载格式样式2IDataFormatdataformat=myworkbook.CreateDataFormat();3ICellStyleNumstyle=myworkbook.CreateCellStyle();4Numstyle.DataFormat=dataformat.GetFormat([DbNum2][$-804]General");//转换为大写汉字5//dataformat.GetFormat("0.0");//更改小数精度【小数点后0个数表示精确到小数点后几位】6//dataformat.GetFormat("#,##0.0");//小节加法,编号7//dataformat.GetFormat("0.00E+00";);//科学计数法8//dataformat.GetFormat("0.00;[Red]-0.00");//正负数的区分【负数为红色】9//dataformat.GetFormat("#??/??");//整数部分+小数部分10//dataformat.GetFormat("??/??");//小数部分11//dataformat.GetFormat("0.00%");//百分比[after小数点有几个0精确到显示的小数位数]13.设置单元格时间格式1//创建CellStyle和DataFormat并加载格式样式2IDataFormatdataformat=myworkbook.CreateDataFormat();3//【提示】】4//1.年;yy年5//2.MM月末两位从0开始;M月从非零开始;mmm[英文月份缩写];mmmm[英文月份全称]6//3.dd日从零开始;d日非零开始7//4。hh小时零开始;h小时非零开始[for12-hoursystem][12小时制必须在时间后加上AM/PM或AM/PM]8//5.HH小时零开始;H小时非零开始[for24-hoursystem]9//6.mm分钟零开始;m分钟非零开始10//7.ss秒零开始;s第二个非零开始11//8.dddd周;dddweek缩写[英文]12//9.aaaaweek;aaa星期缩写[中文]13ICellStyleTimestyle=myworkbook.CreateCellStyle();14Timestyle.DataFormat=dataformat.GetFormat("YYYY年MM月DD日AAAA");[2017年9月1日,星期五]15//DataFormat.getFormat("YyyyMMMMMonDDDDDDD");[2017年9月1日,星期五]16//dataformat.GetFormat("h:mm:ssAM/PM");【3:51:21PM】17//dataformat.GetFormat("h:mm:ssAM/PM");【3:51:21PM】14.设置单元格文本格式1IDataFormatdataformat=myworkbook.CreateDataFormat();23//【提示】可以使用@或文本4ICellStyleTextstyle=myworkbook.CreateCellStyle();Textstyle.DataFormat=dataformat.GetFormat("@");5//dataformat.GetFormat(“文本”);15。插入图片1//第一步:读取图片到字节数组2HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create("http://img1.soufunimg.com/message/images/card/tuanproj/201511/2015112703584458_s.jpg");3byte[]bytes;4using(Streamstream=request.GetResponse().GetResponseStream())5{6using(MemoryStreammstream=newMemoryStream())7{8intcount=0;9byte[]buffer=newbyte[1024];10intreadNum=0;11while((readNum=stream.Read(buffer,0,1024))>0)12{13count=count+readNum;14mstream.Write(buffer,0,1024);15}16mstream.Position=0;17using(BinaryReaderbr=newBinaryReader(mstream))18{1920bytes=br.ReadBytes(count);21}22}23}2425//第二步:将图片添加到工作簿中,指定图片格式并返回图片所在的工作簿——>Picture数组中的索引地址(从1开始)26intpictureIdx=myworkbook.AddPicture(bytes,PictureType.JPEG);2728//第三步:在sheet中创建图片部分29IDrawingpatriarch=mysheet.CreateDrawingPatriarch();30//第四步:设置锚点(起始单元格X坐标0-1023,Y坐标0-255,结束单元格X坐标0-1023,Y坐标0-255,起始单元格行号,列号,结束单元格行号,列号)31IClientAnchoranchor=patriarch.CreateAnchor(0,0,0,0,0,0,2,2);32//第五步:创建图片33IPicturepict=族长.CreatePicture(锚,pictureIdx);16、保存ExcelFileStreamfile=newFileStream(@"D:\CreateExcel.xls",FileMode.Create);myworkbook.Write(file);file.Close();参考:http://blog.csdn.net/xxs77ch/article/details/50174609https://www.cnblogs.com/zqyw/category/1070314.html本文转载自微信“CSharp编程百科”,可通过关注下方二维码。转载本文请联系CSharp编程大全公众号。