using Microsoft.AspNetCore.Http; using NPOI.HPSF; using NPOI.HSSF.UserModel; using NPOI.HSSF.Util; using NPOI.SS.UserModel; using NPOI.SS.Util; using NPOI.XSSF.UserModel; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.IO; using System.Linq; using System.Reflection; using System.Text; namespace Admin.Core.Common { /// /// Npoi之Excel数据导出帮助类 /// 创建Excel表格行列,设置行高,设置字体样式,单元格边框样式,单元格背景颜色和样式,单元格内容对齐方式等常用属性和样式封装 /// public class ExcelHelper { public static ExcelHelper _exceltHelper { get => _exceltHelper ??= new ExcelHelper(); set => _exceltHelper = value; } /// /// DataTable导出到Excel文件 /// /// 源DataTable /// 保存位置 public static string ExportTableExecl(DataTable dt, string strFileName) { //文件夹相对路径 var fileRoot = FileHelper.GetFileRoot(FileActionType.Dow); //文件夹绝对路径 var webRootPath = FileHelper.GetProgramPath() + fileRoot; strFileName = webRootPath + strFileName; using (MemoryStream ms = Exprot(dt)) { using (FileStream fs = new FileStream(strFileName, FileMode.Create, FileAccess.Write)) { byte[] data = ms.ToArray(); fs.Write(data, 0, data.Length); fs.Flush(); } } return strFileName; } /// /// 将泛型的list 集合导出Execl /// /// 实体对象 /// 集合 /// 文件名字 public static string ExportToList(List list, string strFileName) { //文件夹相对路径 var fileRoot = FileHelper.GetFileRoot(FileActionType.Dow); //文件夹绝对路径 var webRootPath = FileHelper.GetProgramPath() + fileRoot; strFileName = webRootPath + strFileName; using (MemoryStream ms = ExprotToList(list)) { using (FileStream fs = new FileStream(strFileName, FileMode.Create, FileAccess.Write)) { byte[] data = ms.ToArray(); fs.Write(data, 0, data.Length); fs.Flush(); } } return strFileName; } /// /// DataTable导出到Excel的MemoryStream /// /// 数据源DataTable /// public static MemoryStream Exprot(DataTable dt) { HSSFWorkbook workBook = new HSSFWorkbook(); ISheet sheet = workBook.CreateSheet(); #region 右键属性 { DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation(); dsi.Company = "NPOI"; workBook.DocumentSummaryInformation = dsi; SummaryInformation si = PropertySetFactory.CreateSummaryInformation(); si.Author = "文件作者信息"; si.ApplicationName = "创建程序信息"; si.LastAuthor = "最后保存者信息"; si.Comments = "作者信息"; si.Title = "标题信息"; si.Subject = "主题信息"; si.CreateDateTime = DateTime.Now; workBook.SummaryInformation = si; } #endregion ICellStyle dateStyle = workBook.CreateCellStyle(); IDataFormat dateFormat = workBook.CreateDataFormat(); dateStyle.DataFormat = dateFormat.GetFormat("yyyy-MM-dd"); //获取列宽 int[] arrCollWidth = new int[dt.Columns.Count]; foreach (DataColumn item in dt.Columns) { arrCollWidth[item.Ordinal] = Encoding.GetEncoding(936).GetBytes(item.ColumnName.ToString()).Length; } for (int i = 0; i < dt.Rows.Count; i++) { for (int j = 0; j < dt.Columns.Count; j++) { int intTemp = Encoding.GetEncoding(936).GetBytes(dt.Rows[i][j].ToString()).Length; if (intTemp > arrCollWidth[j]) { arrCollWidth[j] = intTemp; } } } int rowIndex = 0; foreach (DataRow item in dt.Rows) { #region 新建表 填充表头 列头 样式 { if (rowIndex == 65535 || rowIndex == 0) { if (rowIndex != 0) { sheet = workBook.CreateSheet(); } #region 列头及样式 { IRow headRow = sheet.CreateRow(1); ICellStyle headerStyle = workBook.CreateCellStyle(); headerStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; IFont font = workBook.CreateFont(); font.FontHeightInPoints = 10; font.Boldweight = 700; headerStyle.SetFont(font); foreach (DataColumn cl in dt.Columns) { headRow.CreateCell(cl.Ordinal).SetCellValue(cl.ColumnName); headRow.GetCell(cl.Ordinal).CellStyle = headerStyle; //设置列宽 sheet.SetColumnWidth(cl.Ordinal, (arrCollWidth[cl.Ordinal] + 1) * 256); } } #endregion rowIndex = 2; } } #endregion #region 填充内容 { IRow row = sheet.CreateRow(rowIndex); foreach (DataColumn column in dt.Columns) { ICell cell = row.CreateCell(column.Ordinal); string drValue = item[column].ToString(); switch (column.DataType.ToString()) { case "System.String": cell.SetCellValue(drValue); break; case "System.DateTime": DateTime dateV; DateTime.TryParse(drValue, out dateV); cell.SetCellValue(dateV); cell.CellStyle = dateStyle; break; case "System.Boolean": bool boolV; bool.TryParse(drValue, out boolV); cell.SetCellValue(boolV); break; case "System.Int16": case "System.Int32": case "System.Int64": case "System.Byte": int intV = 0; int.TryParse(drValue, out intV); cell.SetCellValue(intV); break; case "System.Decimal": case "System.Double": double doubleV = 0; double.TryParse(drValue, out doubleV); cell.SetCellValue(doubleV); break; case "System.DBNull": cell.SetCellValue(""); break; default: cell.SetCellValue(""); break; } } } #endregion rowIndex++; } using (MemoryStream ms = new MemoryStream()) { workBook.Write(ms); ms.Flush(); ms.Position = 0; //sheet.Dispose(); //workBook.Dispose(); return ms; } } /// /// 将list 集合导处 Execl /// /// 泛型集合 /// public static MemoryStream ExprotToList(List list) { HSSFWorkbook workbook = new HSSFWorkbook(); ISheet sheet = workbook.CreateSheet(); //创建样式 ICellStyle cellStyle = workbook.CreateCellStyle(); IDataFormat dataFormat = workbook.CreateDataFormat(); cellStyle.DataFormat = dataFormat.GetFormat("yyyy-MM-dd"); //表头样式 IRow headerRow = sheet.CreateRow(0); headerRow.HeightInPoints = 25; ICellStyle headerStyle = workbook.CreateCellStyle(); headerStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; IFont font = workbook.CreateFont(); font.FontHeightInPoints = 20; font.Boldweight = 700; headerStyle.SetFont(font); headerRow.GetCell(0).CellStyle = headerStyle; sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, list[0].GetType().GetProperties().Length - 1)); IRow rows = sheet.CreateRow(1); //获取list属性值 PropertyInfo[] propertyInfo = list[0].GetType().GetProperties(); #region 获取实体的属性值 { for (int i = 0; i < propertyInfo.Length; i++) { rows.CreateCell(i).SetCellValue(propertyInfo[i].Name.ToString()); } } #endregion //填充内容 int propertyIndex = 2; foreach (var item in list) { IRow row = sheet.CreateRow(propertyIndex); for (int i = 0; i < propertyInfo.Length; i++) { var obj = propertyInfo[i].GetValue(item, null); row.CreateCell(i).SetCellValue(obj.ToString()); } propertyIndex++; } //宽度自适应 for (int i = 0; i < list.Count; i++) { sheet.AutoSizeColumn(i); } using (MemoryStream ms = new MemoryStream()) { workbook.Write(ms); ms.Flush(); ms.Position = 0; return ms; } } /// /// T 实体类必须指定DisplayName,根据DisplayName 生成列名 /// /// /// /// /// public static string CreateExcel(string strFileName, List data) where T : class { try { //文件夹相对路径 var fileRoot = FileHelper.GetFileRoot(FileActionType.Dow); //文件夹绝对路径 var webRootPath = FileHelper.GetProgramPath() + fileRoot; strFileName = webRootPath + strFileName; XSSFWorkbook workbook = new XSSFWorkbook(); ISheet sheet1 = workbook.CreateSheet("Sheet1"); IRow headerRow = sheet1.CreateRow(0); //列名 PropertyInfo[] columnsPropertyInfo = data.FirstOrDefault().GetType().GetProperties(); int cellCount = 0; foreach (var column in columnsPropertyInfo) { //根据实体类中DisplayName 生成列名 headerRow.CreateCell(cellCount).SetCellValue(column.GetCustomAttribute().DisplayName); cellCount++; } //item int rowCount = 1; foreach (T item in data) { IRow row = sheet1.CreateRow(rowCount); int count = 0; foreach (PropertyInfo propertyInfo in item.GetType().GetProperties()) { row.CreateCell(count).SetCellValue(propertyInfo.GetValue(item, null).ToString()); count++; } rowCount++; } using (var f = File.Create(strFileName)) { workbook.Write(f); } } catch (Exception ex) { throw ex; } return strFileName; } /// /// T 实体类必须指定DisplayName,根据DisplayName 生成列名 /// /// /// /// /// public static string CreateExcelToDW(string strFileName, List data, List typeViews, string title) where T : class { string newfilePath = string.Empty; try { //文件夹相对路径 var fileRoot = FileHelper.GetFileRoot(FileActionType.Dow); //文件夹绝对路径 var webRootPath = FileHelper.GetProgramPath() + fileRoot; if (!Directory.Exists(webRootPath)) { Directory.CreateDirectory(webRootPath); } newfilePath = fileRoot + strFileName; strFileName = webRootPath + strFileName; XSSFWorkbook workbook = new XSSFWorkbook(); ISheet sheet1 = workbook.CreateSheet("Sheet1"); /* 设置样式-内容 */ ICellStyle notesStyle = workbook.CreateCellStyle(); //设置换行这个要先设置 notesStyle.WrapText = true; //下边框线 notesStyle.BorderBottom = BorderStyle.Thin; //左边框线 notesStyle.BorderLeft = BorderStyle.Thin; //右边框线 notesStyle.BorderRight = BorderStyle.Thin; //上边框线 notesStyle.BorderTop = BorderStyle.Thin; //垂直居中 notesStyle.VerticalAlignment = VerticalAlignment.Center; //左对齐 notesStyle.Alignment = HorizontalAlignment.Left; /* 设置样式-列 */ ICellStyle titleStyle = workbook.CreateCellStyle(); //设置换行这个要先设置 titleStyle.WrapText = true; //下边框线 titleStyle.BorderBottom = BorderStyle.Thin; //左边框线 titleStyle.BorderLeft = BorderStyle.Thin; //右边框线 titleStyle.BorderRight = BorderStyle.Thin; //上边框线 titleStyle.BorderTop = BorderStyle.Thin; //垂直居中 titleStyle.VerticalAlignment = VerticalAlignment.Center; //左对齐 titleStyle.Alignment = HorizontalAlignment.Center; //设置字体加粗 var font = workbook.CreateFont(); font.Boldweight = (short)FontBoldWeight.Bold; titleStyle.SetFont(font); /* 设置样式-项目类型 */ ICellStyle typeStyle = workbook.CreateCellStyle(); //设置换行这个要先设置 typeStyle.WrapText = true; //下边框线 //typeStyle.BorderBottom = BorderStyle.Thin; //左边框线 //typeStyle.BorderLeft = BorderStyle.Thin; //右边框线 //typeStyle.BorderRight = BorderStyle.Thin; //上边框线 //typeStyle.BorderTop = BorderStyle.Thin; //垂直居中 typeStyle.VerticalAlignment = VerticalAlignment.Center; //左对齐 typeStyle.Alignment = HorizontalAlignment.Left; //设置字体加粗 var typeFont = workbook.CreateFont(); typeFont.Boldweight = (short)FontBoldWeight.Bold; typeFont.FontHeightInPoints = 14; typeStyle.SetFont(typeFont); /* 设置样式-标题 */ ICellStyle mainStyle = workbook.CreateCellStyle(); //设置换行这个要先设置 mainStyle.WrapText = true; //下边框线 //typeStyle.BorderBottom = BorderStyle.Thin; //左边框线 //typeStyle.BorderLeft = BorderStyle.Thin; //右边框线 //typeStyle.BorderRight = BorderStyle.Thin; //上边框线 //typeStyle.BorderTop = BorderStyle.Thin; //垂直居中 mainStyle.VerticalAlignment = VerticalAlignment.Center; //左对齐 mainStyle.Alignment = HorizontalAlignment.Center; //设置字体加粗 var mainFont = workbook.CreateFont(); mainFont.Boldweight = (short)FontBoldWeight.Bold; mainFont.FontHeightInPoints = 16; mainStyle.SetFont(mainFont); //设置单元格宽度 sheet1.SetColumnWidth(0, 4 * 200); sheet1.SetColumnWidth(1, 15 * 200); sheet1.SetColumnWidth(2, 12 * 200); sheet1.SetColumnWidth(3, 40 * 200); sheet1.SetColumnWidth(4, 20 * 200); sheet1.SetColumnWidth(5, 6 * 200); sheet1.SetColumnWidth(6, 15 * 200); sheet1.SetColumnWidth(7, 3 * 200); sheet1.SetColumnWidth(8, 3 * 200); sheet1.SetColumnWidth(9, 3 * 200); sheet1.SetColumnWidth(10, 3 * 200); sheet1.SetColumnWidth(11, 3 * 200); sheet1.SetColumnWidth(12, 3 * 200); sheet1.SetColumnWidth(13, 6 * 200); sheet1.SetColumnWidth(14, 6 * 200); sheet1.SetColumnWidth(15, 6 * 200); sheet1.SetColumnWidth(16, 3 * 200); sheet1.SetColumnWidth(17, 9 * 200); sheet1.SetColumnWidth(18, 6 * 200); //创建标题 sheet1.CreateRow(0); sheet1.CreateRow(1); sheet1.CreateRow(2); sheet1.CreateRow(3); PropertyInfo[] columnsPropertyInfo = data.FirstOrDefault().GetType().GetProperties(); int cellCount = 0; foreach (var column in columnsPropertyInfo) { sheet1.GetRow(0).CreateCell(cellCount); //sheet1.GetRow(0).GetCell(cellCount).CellStyle = titleStyle; sheet1.GetRow(1).CreateCell(cellCount); //sheet1.GetRow(1).GetCell(cellCount).CellStyle = titleStyle; sheet1.GetRow(2).CreateCell(cellCount); sheet1.GetRow(2).GetCell(cellCount).CellStyle = titleStyle; sheet1.GetRow(3).CreateCell(cellCount); sheet1.GetRow(3).GetCell(cellCount).CellStyle = titleStyle; if (cellCount < 7 || cellCount > 16) { sheet1.AddMergedRegion(new CellRangeAddress(2, 3, cellCount, cellCount)); } cellCount++; } sheet1.AddMergedRegion(new CellRangeAddress(0, 0, 0, 18)); sheet1.GetRow(0).GetCell(0).SetCellValue(title); sheet1.GetRow(0).GetCell(0).CellStyle = mainStyle; sheet1.AddMergedRegion(new CellRangeAddress(1, 1, 0, 18)); var value = NumStr(0) + "、" + typeViews[0].Name + "类 ( " + typeViews[0].Num.ToString() + "个 ) "; sheet1.GetRow(1).GetCell(0).SetCellValue(value); sheet1.GetRow(1).GetCell(0).CellStyle = typeStyle; sheet1.AddMergedRegion(new CellRangeAddress(2, 2, 7, 16)); int titleCount = 0; foreach (var column in columnsPropertyInfo) { if (titleCount < 7 || titleCount > 16) { //根据实体类中DisplayName 生成列名 sheet1.GetRow(2).GetCell(titleCount).SetCellValue(column.GetCustomAttribute().DisplayName); } else { //根据实体类中DisplayName 生成列名 sheet1.GetRow(3).GetCell(titleCount).SetCellValue(column.GetCustomAttribute().DisplayName); } //设置换行 sheet1.GetRow(2).GetCell(titleCount).CellStyle = titleStyle; titleCount++; } sheet1.GetRow(0).Height = 8 * 180; sheet1.GetRow(1).Height = 3 * 180; sheet1.GetRow(2).Height = 6 * 180; sheet1.GetRow(2).GetCell(7).SetCellValue("主要手续办理情况\n(✔ 为已完成,▲ 为正在办理,\n— 为无需办理,⭕ 为未办理)"); //创建行 int rowCount = 4; foreach (T item in data) { IRow row = sheet1.CreateRow(rowCount); int count = 0; foreach (PropertyInfo propertyInfo in item.GetType().GetProperties()) { var content = row.CreateCell(count); content.SetCellValue(propertyInfo.GetValue(item, null).ToString()); //设置换行 content.CellStyle = notesStyle; count++; } rowCount++; } //插入项目类型 var rowIndex = 1; //var LastRowNum = data.Count + 1; for (int i = 1; i < typeViews.Count; i++) { var type = typeViews[i]; cellCount = 0; rowIndex += typeViews[i - 1].Num + 3; //LastRowNum += 3; sheet1.ShiftRows(rowIndex, sheet1.LastRowNum, 3); //创建行 sheet1.CreateRow(rowIndex); sheet1.CreateRow(rowIndex + 1); sheet1.CreateRow(rowIndex + 2); foreach (var column in columnsPropertyInfo) { //创建单元格 sheet1.GetRow(rowIndex).CreateCell(cellCount); //创建单元格样式 //sheet1.GetRow(rowIndex).GetCell(cellCount).CellStyle = titleStyle; sheet1.GetRow(rowIndex + 1).CreateCell(cellCount); sheet1.GetRow(rowIndex + 1).GetCell(cellCount).CellStyle = titleStyle; sheet1.GetRow(rowIndex + 2).CreateCell(cellCount); sheet1.GetRow(rowIndex + 2).GetCell(cellCount).CellStyle = titleStyle; if (cellCount < 7 || cellCount > 16) { sheet1.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 2, cellCount, cellCount)); } cellCount++; } //手续办理合并单元格 sheet1.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 1, 7, 16)); //项目类型行合并单元格并赋值 sheet1.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 0, 18)); value = NumStr(i) + "、" + type.Name + "类 ( " + type.Num.ToString() + "个 ) "; sheet1.GetRow(rowIndex).GetCell(0).SetCellValue(value); sheet1.GetRow(rowIndex).GetCell(0).CellStyle = typeStyle; sheet1.GetRow(rowIndex).Height = 3 * 180; //单元格标题赋值 titleCount = 0; foreach (var column in columnsPropertyInfo) { if (titleCount < 7 || titleCount > 16) { //根据实体类中DisplayName 生成列名 sheet1.GetRow(rowIndex + 1).GetCell(titleCount).SetCellValue(column.GetCustomAttribute().DisplayName); } else { //根据实体类中DisplayName 生成列名 sheet1.GetRow(rowIndex + 2).GetCell(titleCount).SetCellValue(column.GetCustomAttribute().DisplayName); } //设置换行 sheet1.GetRow(rowIndex + 1).GetCell(titleCount).CellStyle = titleStyle; titleCount++; } //设置单元格高度 sheet1.GetRow(rowIndex + 1).Height = 6 * 180; sheet1.GetRow(rowIndex + 1).GetCell(7).SetCellValue("主要手续办理情况\n(✔ 为已完成,▲ 为正在办理,\n— 为无需办理,⭕ 为未办理)"); } using (var f = File.Create(strFileName)) { workbook.Write(f); } } catch (Exception ex) { throw ex; } return newfilePath; } /// /// 数字转中文 /// /// /// public static string NumStr(int key) { switch (key) { case 0: return "一"; case 1: return "二"; case 2: return "三"; case 3: return "四"; case 4: return "五"; case 5: return "六"; case 6: return "七"; case 7: return "八"; default: return ""; } } /// /// 读取Execl 表格 /// /// 文件路径 /// public static DataTable GetReaderExecl(string fileName) { //文件夹绝对路径 var webRootPath = FileHelper.GetProgramPath(); fileName = webRootPath + fileName; DataTable dt = new DataTable(); HSSFWorkbook workBook; using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { workBook = new HSSFWorkbook(fs); } ISheet sheet = workBook.GetSheetAt(0); System.Collections.IEnumerator rows = sheet.GetRowEnumerator(); IRow headerRow = sheet.GetRow(0); int cellCount = headerRow.LastCellNum; for (int i = 0; i < cellCount; i++) { ICell cell = headerRow.GetCell(i); dt.Columns.Add(cell.ToString()); } for (int j = (sheet.FirstRowNum + 1); j <= sheet.LastRowNum; j++) { IRow row = sheet.GetRow(j); DataRow dr = dt.NewRow(); for (int i = row.FirstCellNum; i <= cellCount; i++) { if (row.GetCell(i) != null) { dr[i] = row.GetCell(i).ToString(); } } dt.Rows.Add(dr); } return dt; } /// /// TODO:先创建行,然后在创建对应的列 /// 创建Excel中指定的行 /// /// Excel工作表对象 /// 创建第几行(从0开始) /// 行高 public HSSFRow CreateRow(ISheet sheet, int rowNum, float rowHeight) { HSSFRow row = (HSSFRow)sheet.CreateRow(rowNum); //创建行 row.HeightInPoints = rowHeight; //设置列头行高 return row; } /// /// 创建行内指定的单元格 /// /// 需要创建单元格的行 /// 单元格样式 /// 创建第几个单元格(从0开始) /// 给单元格赋值 /// public HSSFCell CreateCells(HSSFRow row, HSSFCellStyle cellStyle, int cellNum, string cellValue) { HSSFCell cell = (HSSFCell)row.CreateCell(cellNum); //创建单元格 cell.CellStyle = cellStyle; //将样式绑定到单元格 if (!string.IsNullOrWhiteSpace(cellValue)) { //单元格赋值 cell.SetCellValue(cellValue); } return cell; } /// /// 行内单元格常用样式设置 /// /// Excel文件对象 /// 水平布局方式 /// 垂直布局方式 /// 字体大小 /// 是否需要边框 /// 字体加粗 (None = 0,Normal = 400,Bold = 700 /// 字体(仿宋,楷体,宋体,微软雅黑...与Excel主题字体相对应) /// 是否增加边框颜色 /// 是否将文字变为斜体 /// 是否自动换行 /// 是否增加单元格背景颜色 /// 填充图案样式(FineDots 细点,SolidForeground立体前景,isAddFillPattern=true时存在) /// 单元格背景颜色(当isAddCellBackground=true时存在) /// 字体颜色 /// 下划线样式(无下划线[None],单下划线[Single],双下划线[Double],会计用单下划线[SingleAccounting],会计用双下划线[DoubleAccounting]) /// 字体上标下标(普通默认值[None],上标[Sub],下标[Super]),即字体在单元格内的上下偏移量 /// 是否显示删除线 /// public HSSFCellStyle CreateStyle(HSSFWorkbook workbook, HorizontalAlignment hAlignment, VerticalAlignment vAlignment, short fontHeightInPoints, bool isAddBorder, short boldWeight, string fontName = "宋体", bool isAddBorderColor = true, bool isItalic = false, bool isLineFeed = false, bool isAddCellBackground = false, FillPattern fillPattern = FillPattern.NoFill, short cellBackgroundColor = HSSFColor.Yellow.Index, short fontColor = HSSFColor.Black.Index, FontUnderlineType underlineStyle = FontUnderlineType.None, FontSuperScript typeOffset = FontSuperScript.None, bool isStrikeout = false) { HSSFCellStyle cellStyle = (HSSFCellStyle)workbook.CreateCellStyle(); //创建列头单元格实例样式 cellStyle.Alignment = hAlignment; //水平居中 cellStyle.VerticalAlignment = vAlignment; //垂直居中 cellStyle.WrapText = isLineFeed;//自动换行 //背景颜色,边框颜色,字体颜色都是使用 HSSFColor属性中的对应调色板索引,关于 HSSFColor 颜色索引对照表,详情参考:https://www.cnblogs.com/Brainpan/p/5804167.html //TODO:引用了NPOI后可通过ICellStyle 接口的 FillForegroundColor 属性实现 Excel 单元格的背景色设置,FillPattern 为单元格背景色的填充样式 //TODO:十分注意,要设置单元格背景色必须是FillForegroundColor和FillPattern两个属性同时设置,否则是不会显示背景颜色 if (isAddCellBackground) { cellStyle.FillForegroundColor = cellBackgroundColor;//单元格背景颜色 cellStyle.FillPattern = fillPattern;//填充图案样式(FineDots 细点,SolidForeground立体前景) } //是否增加边框 if (isAddBorder) { //常用的边框样式 None(没有),Thin(细边框,瘦的),Medium(中等),Dashed(虚线),Dotted(星罗棋布的),Thick(厚的),Double(双倍),Hair(头发)[上右下左顺序设置] cellStyle.BorderBottom = BorderStyle.Thin; cellStyle.BorderRight = BorderStyle.Thin; cellStyle.BorderTop = BorderStyle.Thin; cellStyle.BorderLeft = BorderStyle.Thin; } //是否设置边框颜色 if (isAddBorderColor) { //边框颜色[上右下左顺序设置] cellStyle.TopBorderColor = HSSFColor.DarkGreen.Index;//DarkGreen(黑绿色) cellStyle.RightBorderColor = HSSFColor.DarkGreen.Index; cellStyle.BottomBorderColor = HSSFColor.DarkGreen.Index; cellStyle.LeftBorderColor = HSSFColor.DarkGreen.Index; } /** * 设置相关字体样式 */ var cellStyleFont = (HSSFFont)workbook.CreateFont(); //创建字体 //假如字体大小只需要是粗体的话直接使用下面该属性即可 //cellStyleFont.IsBold = true; cellStyleFont.Boldweight = boldWeight; //字体加粗 cellStyleFont.FontHeightInPoints = fontHeightInPoints; //字体大小 cellStyleFont.FontName = fontName;//字体(仿宋,楷体,宋体 ) cellStyleFont.Color = fontColor;//设置字体颜色 cellStyleFont.IsItalic = isItalic;//是否将文字变为斜体 cellStyleFont.Underline = underlineStyle;//字体下划线 cellStyleFont.TypeOffset = typeOffset;//字体上标下标 cellStyleFont.IsStrikeout = isStrikeout;//是否有删除线 cellStyle.SetFont(cellStyleFont); //将字体绑定到样式 return cellStyle; } } }