重构简化excel导出

Former-commit-id: add94f7c240680b1faf668a80c2f109d65b3ff22
Former-commit-id: d188c06a006f93c78681f620288162abbc3276e3
1.0
wanggang 5 years ago
parent 7a467da9af
commit ce000313a5

@ -403,68 +403,67 @@ namespace TeacherExt.Controllers
var row = sheet.CreateRow(rowIndex);
teacher.DisplayOrder = rowNumber;
row.Order(00).CreateCell(++colIndex).SetStyle(style).SetType(CellType.Numeric).SetCellValue(rowNumber);
// this.IsExport(teacher);
row.Order(01).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.Organ);
row.Order(02).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.RealName);
row.Order(03).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.Sex) ? "无" : teacher.Sex);
row.Order(04).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.Birthday.HasValue ? teacher.Birthday.Value.ToString("yyyy-MM") : "无");
if (teacher.Age.HasValue)
{
row.Order(05).CreateCell(++colIndex).SetStyle(style).SetType(CellType.Numeric).SetCellValue(teacher.Age.Value);
}
else
{
row.Order(05).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
}
row.Order(06).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.Nation) ? "无" : teacher.Nation);
row.Order(07).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.NativePlace) ? "无" : teacher.NativePlace);
row.Order(08).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.PhoneNumber) ? "无" : teacher.PhoneNumber);
row.Order(09).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.IdNumber) ? "无" : teacher.IdNumber);
row.Order(10).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.JobStart.HasValue ? teacher.JobStart.Value.ToString("yyyy-MM") : "无");
row.Order(11).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.TeachDate.HasValue ? teacher.TeachDate.Value.ToString("yyyy-MM") : "无");
row.Order(12).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.CurrentJobStart.HasValue ? teacher.CurrentJobStart.Value.ToString("yyyy-MM") : "无");
row.Export("A", headers, () => teacher.DisplayOrder)?.SetCell(++colIndex,style,teacher.DisplayOrder);
row.Export("B", headers, () => teacher.Organ)?.SetCell(++colIndex,style,teacher.Organ);
row.Export("C", headers, () => teacher.RealName)?.SetCell(++colIndex,style,teacher.RealName);
row.Export("D", headers, () => teacher.Sex)?.SetCell(++colIndex,style,teacher.Sex);
row.Export("E", headers, () => teacher.Birthday)?.SetCell(++colIndex, style, teacher.Birthday);
row.Export("F", headers, () => teacher.Age)?.SetCell(++colIndex, style, teacher.Age);
//if (teacher.Age.HasValue)
//{
// row.Export("F", headers, () => teacher.Age).CreateCell(++colIndex).SetStyle(style).SetType(CellType.Numeric).SetCellValue(teacher.Age.Value);
//}
//else
//{
// row.Export("F", headers, () => teacher.Age).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
//}
row.Export("G", headers, () => teacher.Nation).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.Nation) ? "无" : teacher.Nation);
row.Export("H", headers, () => teacher.NativePlace).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.NativePlace) ? "无" : teacher.NativePlace);
row.Export("I", headers, () => teacher.PhoneNumber).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.PhoneNumber) ? "无" : teacher.PhoneNumber);
row.Export("J", headers, () => teacher.IdNumber).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.IdNumber) ? "无" : teacher.IdNumber);
row.Export("K", headers, () => teacher.JobStart).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.JobStart.HasValue ? teacher.JobStart.Value.ToString("yyyy-MM") : "无");
row.Export("L", headers, () => teacher.TeachDate).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.TeachDate.HasValue ? teacher.TeachDate.Value.ToString("yyyy-MM") : "无");
row.Export("M", headers, () => teacher.CurrentJobStart).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.CurrentJobStart.HasValue ? teacher.CurrentJobStart.Value.ToString("yyyy-MM") : "无");
if (teacher.JobStart.HasValue)
{
row.Order(13).CreateCell(++colIndex).SetStyle(style).SetType(CellType.Numeric).SetCellValue(teacher.JobAgeYear.Value);
row.Order(14).CreateCell(++colIndex).SetStyle(style).SetType(CellType.Numeric).SetCellValue(teacher.JobAgeMonth.Value);
row.Export("N", headers, () => teacher.JobAgeYear).CreateCell(++colIndex).SetStyle(style).SetType(CellType.Numeric).SetCellValue(teacher.JobAgeYear.Value);
row.Export("O", headers, () => teacher.JobAgeMonth).CreateCell(++colIndex).SetStyle(style).SetType(CellType.Numeric).SetCellValue(teacher.JobAgeMonth.Value);
}
else
{
row.Order(13).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Order(14).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Export("N", headers, () => teacher.JobAgeYear).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Export("O", headers, () => teacher.JobAgeMonth).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
}
row.Order(15).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.Politics) ? "无" : teacher.Politics);
row.Order(16).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.JoinPartyDate.HasValue ? teacher.JoinPartyDate.Value.ToString("yyyy-MM") : "无");
row.Order(17).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.MaxTitle) ? "无" : teacher.MaxTitle);
row.Order(18).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.MaxTitleStart.HasValue ? teacher.MaxTitleStart.Value.ToString("yyyy-MM") : "无");
row.Export("P", headers, () => teacher.Politics).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.Politics) ? "无" : teacher.Politics);
row.Export("Q", headers, () => teacher.JoinPartyDate).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.JoinPartyDate.HasValue ? teacher.JoinPartyDate.Value.ToString("yyyy-MM") : "无");
row.Export("R", headers, () => teacher.MaxTitle).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.MaxTitle) ? "无" : teacher.MaxTitle);
row.Export("S", headers, () => teacher.MaxTitleStart).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.MaxTitleStart.HasValue ? teacher.MaxTitleStart.Value.ToString("yyyy-MM") : "无");
if (teacher.IsJobAsMaxTitle.HasValue)
{
if (teacher.IsJobAsMaxTitle.Value)
{
row.Order(19).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.JobAsMaxTitleDate.HasValue ? teacher.JobAsMaxTitleDate.Value.ToString("yyyy-MM") : "无");
row.Order(20).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Order(21).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Order(22).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Order(23).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Export("T", headers, () => teacher.JobAsMaxTitleDate).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.JobAsMaxTitleDate.HasValue ? teacher.JobAsMaxTitleDate.Value.ToString("yyyy-MM") : "无");
row.Export("U", headers, () => teacher.JobAsNotMaxTitleReason).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Export("V", headers, () => teacher.NotMaxTitle).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Export("W", headers, () => teacher.NotMaxTitleStart).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Export("X", headers, () => teacher.JobAsNotMaxTitleDate).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
}
else
{
row.Order(19).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Order(20).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.JobAsNotMaxTitleReason) ? "无" : teacher.JobAsNotMaxTitleReason);
row.Order(21).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.NotMaxTitle) ? "无" : teacher.NotMaxTitle);
row.Order(22).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.NotMaxTitleStart.HasValue ? teacher.NotMaxTitleStart.Value.ToString("yyyy-MM") : "无");
row.Order(23).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.JobAsNotMaxTitleDate.HasValue ? teacher.JobAsNotMaxTitleDate.Value.ToString("yyyy-MM") : "无");
row.Export("T", headers, () => teacher.JobAsMaxTitleDate).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Export("U", headers, () => teacher.JobAsNotMaxTitleReason).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.JobAsNotMaxTitleReason) ? "无" : teacher.JobAsNotMaxTitleReason);
row.Export("V", headers, () => teacher.NotMaxTitle).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.NotMaxTitle) ? "无" : teacher.NotMaxTitle);
row.Export("W", headers, () => teacher.NotMaxTitleStart).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.NotMaxTitleStart.HasValue ? teacher.NotMaxTitleStart.Value.ToString("yyyy-MM") : "无");
row.Export("X", headers, () => teacher.JobAsNotMaxTitleDate).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.JobAsNotMaxTitleDate.HasValue ? teacher.JobAsNotMaxTitleDate.Value.ToString("yyyy-MM") : "无");
}
}
else
{
row.Order(19).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Order(20).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Order(21).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Order(22).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Order(23).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Export("T", headers, () => teacher.JobAsMaxTitleDate).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Export("U", headers, () => teacher.JobAsNotMaxTitleReason).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Export("V", headers, () => teacher.NotMaxTitle).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Export("W", headers, () => teacher.NotMaxTitleStart).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
row.Export("X", headers, () => teacher.JobAsNotMaxTitleDate).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue("无");
}
row.Order(24).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.PostType) ? "无" : teacher.PostType);
row.Order(25).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(string.IsNullOrEmpty(teacher.PostGrade) ? "无" : teacher.PostGrade);

@ -5,6 +5,7 @@ using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using System.Text;
@ -24,10 +25,48 @@ namespace TeacherExt.Controllers
return cell;
}
public static ICell SetCell(this IRow row,int col, ICellStyle style,object value)
{
var cell = row.GetCell(col) ?? row.CreateCell(col);
cell.SetStyle(style);
if(value!=null)
{
if(value.GetType().UnderlyingSystemType == typeof(int))
{
cell.SetCellType(CellType.Numeric);
cell.SetCellValue((value as int?).Value);
}
else if(value.GetType().UnderlyingSystemType==typeof(DateTime))
{
cell.SetCellType(CellType.String);
cell.SetCellValue((value as DateTime?).Value);
}
else
{
cell.SetCellType(CellType.String);
cell.SetCellValue(value as string);
}
}
else
{
cell.SetCellType(CellType.String);
cell.SetCellValue("无");
}
return cell;
}
public static IRow Order(this IRow row, int order)
{
return row;
}
public static IRow Export(this IRow row, string rawCol, List<string> allExportHeaders, Expression<Func<dynamic>> property)
{
var excelHeader = ((property.Body as UnaryExpression)?.Operand as MemberExpression)?.Member?.GetCustomAttribute<ExcelHeaderAttribute>()?.Header;
if (allExportHeaders!=null&& property != null&&!string.IsNullOrEmpty(excelHeader)&&!allExportHeaders.Contains(excelHeader))
{
return null;
}
return row;
}
public static ICellStyle CreateStyle(ISheet sheet, short? backgroundColor = null, double? fontSize = null, short? fontColor = null, bool isBold = false, string fontName = null, bool? textWrap = null)
{

@ -44,7 +44,7 @@ namespace TeacherExt.Models
[ExcelHeader("序号")]
[HiddenInput]
public int DisplayOrder { get; set; }
public int? DisplayOrder { get; set; }
[ExcelHeader("工作单位")]
[ReadOnly(true)]

Loading…
Cancel
Save