From 0a0500dd70a61f2399e543e343930b083ed0eb7c Mon Sep 17 00:00:00 2001 From: biss Date: Fri, 21 Aug 2026 22:11:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/ExperimentGradesController.cs | 14 +++++++++++++- .../ExperimentGradesControllerTests.cs | 3 +++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/Jiaowu.Api/Controllers/ExperimentGradesController.cs b/src/Jiaowu.Api/Controllers/ExperimentGradesController.cs index c8bc5a2..363567f 100644 --- a/src/Jiaowu.Api/Controllers/ExperimentGradesController.cs +++ b/src/Jiaowu.Api/Controllers/ExperimentGradesController.cs @@ -821,8 +821,20 @@ public sealed class ExperimentGradesController( format.Font.FontColor = ClosedXML.Excel.XLColor.FromHtml("#B42318"); } }); + var project = sheet.ExperimentProject!; + var task = project.TeachingTask!; + var course = await db.Courses.AsNoTracking() + .Where(item => item.Id == task.CourseId) + .Select(item => new { item.Code, item.Name }) + .FirstOrDefaultAsync(cancellationToken); return File(bytes, ExcelWorkbookHelper.ContentType, - DownloadFileName.Template("实验成绩", ".xlsx", sheet.ExperimentProject!.Code)); + DownloadFileName.Template("实验成绩", ".xlsx", + course?.Code, + course?.Name, + task.TaskNumber, + task.Name, + project.Code, + project.Name)); } [HttpPost("sheets/{id:guid}/import")] diff --git a/tests/Jiaowu.Api.Tests/ExperimentGradesControllerTests.cs b/tests/Jiaowu.Api.Tests/ExperimentGradesControllerTests.cs index 4766721..c85338d 100644 --- a/tests/Jiaowu.Api.Tests/ExperimentGradesControllerTests.cs +++ b/tests/Jiaowu.Api.Tests/ExperimentGradesControllerTests.cs @@ -311,6 +311,9 @@ public sealed class ExperimentGradesControllerTests sheet.Id, CancellationToken.None)); Assert.Equal("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", template.ContentType); + Assert.Equal( + "实验成绩-CSLAB-系统实验-2099-1-CSLAB-01-系统实验教学班-LAB-EXCEL-Excel 实验成绩-导入模板.xlsx", + template.FileDownloadName); await using var templateStream = new MemoryStream(template.FileContents); await using var stream = new MemoryStream(); using (var workbook = new XLWorkbook(templateStream))