Former-commit-id: 99e85f58f3a6daf0fa54b540e45ad6ae99a5b384
Former-commit-id: 1c87aeeec6729394037c835e394b4072b651733d
1.0
wanggang 5 years ago
parent acd09f3099
commit 3edf93ad4c

@ -34,7 +34,7 @@
{
uihit = "String";
}
<div class="col-sm-6">
<div class="col-sm-3">
<div class="form-group row">
<label class="col-sm-4 col-form-label" title="@prop.GetDisplayName()" for="@prop.PropertyName" data-ui="@uihit @prop.UnderlyingOrModelType" style="text-align:right;overflow:hidden;">@prop.GetDisplayName():</label>
<div class="col-sm-8">

@ -15,6 +15,8 @@ using System.IO;
using TeacherExt.Entities;
using TeacherExt.Models;
using NPOI.XSSF.UserModel;
using TeacherExt.Infra;
using NPOI.SS.UserModel;
namespace TeacherExt.Controllers
{
@ -43,11 +45,52 @@ namespace TeacherExt.Controllers
var template = Path.Combine(this._env.ContentRootPath,"wwwroot", "teacher.xlsx");
using var fs = System.IO.File.OpenRead(template);
var wk = new XSSFWorkbook(fs);
var sheet = wk.GetSheetAt(0);
this.ExportInternal(sheet);
for (int i = 0; i < 68; i++)
{
sheet.AutoSizeColumn(i);
}
using var ms = new MemoryStream();
wk.Write(ms);
return File(ms.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",$"教师列表_{DateTime.Now.ToString("yyyy_MM-dd_HH_mm_ss")}.xlsx");
}
private void ExportInternal(ISheet sheet)
{
var style = sheet.Workbook.CreateCellStyle();
style.BorderTop = BorderStyle.Thin;
style.BorderRight = BorderStyle.Thin;
style.BorderBottom = BorderStyle.Thin;
style.BorderLeft = BorderStyle.Thin;
var list = this._teacherRepo.ReadOnlyTable()
.ToList().Select(o =>
{
var m = o.To<EditTeacherModel>();
this.EntityToModel(o, m);
this.ToDisplayModel(o, m);
return m;
})
.ToList();
for (int i = 0; i < list.Count; i++)
{
var teacher = list[i];
var rowNumber = i + 1;
var rowIndex = i + 4;
var row = sheet.CreateRow(rowIndex);
var colIndex = -1;
row.CreateCell(++colIndex).SetStyle(style).SetType(CellType.Numeric).SetCellValue(rowNumber);
row.CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.Organ);
row.CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.UserType);
row.CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.RealName);
row.CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.Sex);
if(teacher.Birthday.HasValue)
{
row.CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.Birthday.Value.ToString("yyyy-MM"));
}
}
}
public override void OnActionExecuting(ActionExecutingContext context)
{
}
@ -65,15 +108,15 @@ namespace TeacherExt.Controllers
public override void EntityToModel(Teacher entity, EditTeacherModel model)
{
if (string.IsNullOrEmpty(entity.IdNumber))
if (!string.IsNullOrEmpty(entity.IdNumber))
{
var value = entity.IdNumber.Length == 15 ? $"19{entity.IdNumber.Substring(5, 6)}" : entity.IdNumber.Substring(5, 8);
var value = entity.IdNumber.Length == 15 ? $"19{entity.IdNumber.Substring(6, 6)}" : entity.IdNumber.Substring(6, 8);
var birthday = DateTime.ParseExact(value, "yyyyMMdd", CultureInfo.InvariantCulture);
model.Age = DateTime.Now.Year - birthday.Year;
}
if (entity.JobStart.HasValue)
{
model.Age = DateTime.Now.Year - entity.JobStart.Value.Year;
model.JobAge = DateTime.Now.Year - entity.JobStart.Value.Year;
}
}

@ -0,0 +1,19 @@
using NPOI.SS.UserModel;
namespace TeacherExt.Infra
{
public static class NPOIExt
{
public static ICell SetType(this ICell cell, CellType type)
{
cell.SetCellType(type);
return cell;
}
public static ICell SetStyle(this ICell cell, ICellStyle style)
{
cell.CellStyle = style;
return cell;
}
}
}
Loading…
Cancel
Save