diff --git a/labs/Teacher/TeacherExt/Controllers/HomeController.cs b/labs/Teacher/TeacherExt/Controllers/HomeController.cs
index dbb878d6..ee352d7d 100644
--- a/labs/Teacher/TeacherExt/Controllers/HomeController.cs
+++ b/labs/Teacher/TeacherExt/Controllers/HomeController.cs
@@ -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
();
+ 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;
}
}
diff --git a/labs/Teacher/TeacherExt/Infra/NPOIExt.cs b/labs/Teacher/TeacherExt/Infra/NPOIExt.cs
new file mode 100644
index 00000000..5b37959f
--- /dev/null
+++ b/labs/Teacher/TeacherExt/Infra/NPOIExt.cs
@@ -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;
+ }
+ }
+}
diff --git a/labs/Teacher/TeacherExt/wwwroot/teacher.xlsx b/labs/Teacher/TeacherExt/wwwroot/teacher.xlsx
index 107f24c5cda1e3b225c051a8b1427c1fd93831a6..080a0e236ceeea087934e6f838e0c49a4458debf 100644
GIT binary patch
delta 23012
zcmZTwWmsIxwj@Y`y99T)V8LC2ySoGp?!JS&6C_xG0Kq*t1b6q~?(Y7E$hqgf`)9sy
zPj|0gtEyJ@W@a{(+b_yDU$DtbK|rE|y##{>0|O%l6K&Q9>wf_TW)A}fh6XnJLQB}j
z+R@nBQBT>;*4ROZ!PUx=C~NRVB{AgS3!p=_Rd($SauewZQcP)KR{)g1stjk@zIi9f
z3qt*UbEC;}`r&x1CvQp^dipG=&*B~u>tx<%n}fJ=VrpT1#>3GgFZF`sJgJzExnA$(
z1-N=%v(=(w$DWGSEoUN23D~jm@!{~&k?MCf@M30>h4OzD(GkjdgM`AocBDlTZQiX=>r$1Z$jT*r%i??ee=BB
zl!+Ehk}i6QcHU^Xjb{XITn722Z-YrAGU?DK7)_YCJDWe%vEpR~_or=D6+A(PRI(wk
zpL-HRoQ@=;AH50{oL`A(a{U;}{C;Ky2&%;_#jyLdm*!k5{z!Fs%l2bTY#z;^#rcly
z26t?q+FxU-V8XhG*7zax3K0$L?v2}qw-&!}T^-k6@)*Ts>(`+tG-~Vb4d^72)`LUn
z7UYdDSc2hULgHcczYRF006nf18+21>8Z7CoiuFsa=K`f*5J&T@w6Og%M#I3QXVVwmfQf_)=nrRPo?~+Eqi`d
z{YGBI4@Iyt&n;c96K~|!{>w&iZfJ&M7s2AJOXU&TLLbIR&y{P2s8