.Net NPOI 简单Demo,一看就会
#region 文件输出 public class BasicInfodsa { public string name; public string phone; } List zyData = new List(); var zyUserList = BLL_User.getAllZYUserList(); var zyUserGroup = zyUserList.GroupBy(c => c.AccName.Trim()); foreach ( var item in zyUserGroup) { if (item.Count() > 1) { foreach ( var subitem in item) { zyData.Add( new BasicInfodsa { name = subitem.AccName, phone = subitem.CardID }); } } } //获得数据 var Data = zyData; //创建一个新的excel文件 HSSFWorkbook book = new HSSFWorkbook(); //创建一个工作区 ISheet sheet = book.CreateSheet( "sheet1" ); //创建一行 也就是在sheet1这个工作区创建一行 在NPOI中只有先创建才能后使用 IRow row = sheet.CreateRow(0); for ( int i = 0; i < 5; i++) { //设置单元格的宽度 sheet.SetColumnWidth(i, 16 * 156); } sheet.SetColumnWidth(4, 30 * 156); sheet.SetColumnWidth(1, 21 * 156); //定义一个样式,迎来设置样式属性 ICellStyle setborder = book.CreateCellStyle(); //设置单元格上下左右边框线 但是不包括最外面的一层 setborder.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; setborder.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; setborder.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; setborder.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; //文字水平和垂直对齐方式 setborder.VerticalAlignment = VerticalAlignment.Center; //垂直居中 setborder.Alignment = HorizontalAlignment.Center; //水平居中 setborder.WrapText = true ; //自动换行 //再定义一个样式,用来设置最上面标题行的样式 ICellStyle setborderdeth = book.CreateCellStyle(); //设置单元格上下左右边框线 但是不包括最外面的一层 setborderdeth.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; setborderdeth.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; setborderdeth.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; setborderdeth.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; //定义一个字体样式 IFont font = book.CreateFont(); //将字体设为红色 font.Color = IndexedColors.Red.Index; //font.FontHeightInPoints = 17; //将定义的font样式给到setborderdeth样式中 setborderdeth.SetFont(font); //文字水平和垂直对齐方式 setborderdeth.VerticalAlignment = VerticalAlignment.Center; //垂直居中 setborderdeth.Alignment = HorizontalAlignment.Center; //水平居中 setborderdeth.WrapText = true ; //自动换行 //设置第一行单元格的高度为25 row.HeightInPoints = 25; //设置单元格的值 row.CreateCell(0).SetCellValue( "姓名" ); //将style属性给到这个单元格 row.GetCell(0).CellStyle = setborderdeth; row.CreateCell(1).SetCellValue( "电话" ); row.GetCell(1).CellStyle = setborderdeth; //循环的导出到excel的每一行 for ( int i = 0; i < Data.Count; i++) { //每循环一次,就新增一行 索引从0开始 所以第一次循环CreateRow(1) 前面已经创建了标题行为0 IRow row1 = sheet.CreateRow(i + 1); row1.HeightInPoints = 21; //给新加的这一行创建第一个单元格,并且给这第一个单元格设置值 以此类推... row1.CreateCell(0).SetCellValue(Convert.ToString(Data[i].name)); //先获取这一行的第一个单元格,再给其设置样式属性 以此类推... row1.GetCell(0).CellStyle = setborder; row1.CreateCell(1).SetCellValue(Data[i].phone); row1.GetCell(1).CellStyle = setborder; } System.IO.MemoryStream ms = new System.IO.MemoryStream(); book.Write(ms); ms.Seek(0, SeekOrigin.Begin); DateTime dttime = DateTime.Now; string datetime = dttime.ToString( "yyyy-MM-dd" ); string filename = "一卡通数据.xls" ; Response.AddHeader( "Content-Disposition" , "attachment; filename=" + filename); Response.BinaryWrite(ms.ToArray()); #endregion
本文来自博客园,作者:WantRemake,转载请注明原文链接:https://www.cnblogs.com/SmallChen/p/16386717.html