From aaad9c9936b9cb84a84c4f38e66569a3be0fae81 Mon Sep 17 00:00:00 2001 From: wanggang <76527413@qq.com> Date: Fri, 8 Jan 2021 10:56:07 +0800 Subject: [PATCH] update Former-commit-id: fdcfd31cf44ce9f175f64698cddbe4741fe40741 Former-commit-id: b1def7400cb3f37fd1e6aef8c886864282dfd0ac --- .../TeacherExt/Controllers/HomeController.cs | 89 ++++++++++++------- 1 file changed, 55 insertions(+), 34 deletions(-) diff --git a/labs/Teacher/TeacherExt/Controllers/HomeController.cs b/labs/Teacher/TeacherExt/Controllers/HomeController.cs index f4a0307f..c3f725c2 100644 --- a/labs/Teacher/TeacherExt/Controllers/HomeController.cs +++ b/labs/Teacher/TeacherExt/Controllers/HomeController.cs @@ -381,7 +381,7 @@ namespace TeacherExt.Controllers private void ExportInternal(ISheet sheet, QueryTeacherModel model) { - var style = this.CreateStyle(sheet); + var style = this.CreateStyle(sheet,fontName:"宋体",fontSize:11); var headers = CreateHader(sheet, model); var list = this.Query(model) @@ -541,40 +541,18 @@ namespace TeacherExt.Controllers row.Order(55).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.CurrentAddressStreat) ? "无" : teacher.CurrentAddressStreat); row.Order(56).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.Comment) ? "无" : teacher.Comment); } - for (int i = 0; i < rowIndex; i++) - { - sheet.AutoSizeColumn(i); - var row = sheet.GetRow(i); - if (row != null) - { - for (int j = 0; j < colIndex; j++) - { - var cell = sheet.GetRow(i).GetCell(j); - if (cell != null) - { - var length = cell.ToString().Split('\n').Select(o=> Encoding.UTF8.GetBytes(o).Count()).Max()*256; - if (length > sheet.GetColumnWidthInPixels(j)) - { - if (!cell.IsMergedCell) - { - sheet.SetColumnWidth(j, length); - } - } - } - } - } - } + this.SetColWidth(3,sheet); } private List CreateHader(ISheet sheet, QueryTeacherModel model) { - var style = this.CreateStyle(sheet, HSSFColor.PaleBlue.Index, 11,HSSFColor.White.Index,true,"黑体"); + var style = this.CreateStyle(sheet,backgroundColor: HSSFColor.PaleBlue.Index,fontSize: 11,fontColor: HSSFColor.White.Index,isBold: true,fontName: "黑体",textWrap:true); var result = new List(); var headers = typeof(EditTeacherModel).GetProperties().Select(o => o.GetCustomAttribute()).Where(o => o != null).ToList(); var colIndex = 0; foreach (var item in headers) { - if (!model.Headers.Any()||model.Headers.Contains(item.Header)) + if (!model.Headers.Any() || model.Headers.Contains(item.Header)) { result.Add(item.Header); int i = 0; @@ -585,7 +563,7 @@ namespace TeacherExt.Controllers var row = (sheet.GetRow(j) ?? sheet.CreateRow(j)); var cell = (row.GetCell(colIndex) ?? row.CreateCell(colIndex)); cell.SetStyle(style);//.SetCellValue(head.Key); - if(j==i) + if (j == i) { cell.SetCellValue(head.Key); } @@ -610,7 +588,7 @@ namespace TeacherExt.Controllers if (cell != null && cell.StringCellValue != "") { var col = 1; - if(j+1 1) { - if(!cell.IsMergedCell) + if (!cell.IsMergedCell) { - sheet.AddMergedRegion(new CellRangeAddress(i,i,j,j+col-1)); + sheet.AddMergedRegion(new CellRangeAddress(i, i, j, j + col - 1)); } else { @@ -637,9 +615,9 @@ namespace TeacherExt.Controllers foreach (var rcell in cells) { var region = this.GetRegion(sheet, rcell); - if(region!=null) + if (region != null) { - RemoveRegion(sheet,region); + RemoveRegion(sheet, region); } } sheet.AddMergedRegion(new CellRangeAddress(i, rowEnd, j, j + col - 1)); @@ -655,6 +633,46 @@ namespace TeacherExt.Controllers return result; } + + private void SetColWidth(int lastHeadNum, ISheet sheet) + { + for (int i = lastHeadNum; i < sheet.LastRowNum; i++) + { + var row = sheet.GetRow(i); + if (row != null) + { + for (int j = 0; j < row.LastCellNum; j++) + { + var cell = sheet.GetRow(i).GetCell(j); + if (cell != null) + { + if (i == lastHeadNum && string.IsNullOrEmpty(cell.StringCellValue)) + { + for (int k = 0; k < lastHeadNum+1; k++) + { + if (i - k >= 0) + { + var tempCell = sheet.GetRow(i - k).GetCell(j); + if (tempCell.StringCellValue != "") + { + cell = tempCell; + break; + } + } + } + } + var length = (cell.ToString().Split('\n').Select(o => Encoding.UTF8.GetBytes(o).Count()).Max())* 256; + if (length > sheet.GetColumnWidth(j)) + { + sheet.SetColumnWidth(j, length); + } + } + } + } + } + } + + private CellRangeAddress GetRegion(ISheet sheet,ICell cell) { CellRangeAddress result = null; @@ -688,10 +706,9 @@ namespace TeacherExt.Controllers } } - private ICellStyle CreateStyle(ISheet sheet,short? backgroundColor=null,double? fontSize=null,short? fontColor=null,bool isBold=false,string fontName=null) + private ICellStyle CreateStyle(ISheet sheet,short? backgroundColor=null,double? fontSize=null,short? fontColor=null,bool isBold=false,string fontName=null,bool? textWrap=null) { var style = sheet.Workbook.CreateCellStyle(); - style.WrapText = true; if(backgroundColor.HasValue) { style.FillPattern = FillPattern.SolidForeground; @@ -711,6 +728,10 @@ namespace TeacherExt.Controllers { font.Color = fontColor.Value; } + if(textWrap.HasValue) + { + style.WrapText = textWrap.Value; + } style.SetFont(font); style.Alignment = HorizontalAlignment.Center; style.VerticalAlignment = VerticalAlignment.Center;