From df2f70ccf48050ba345e379d6be3659c49a62cf8 Mon Sep 17 00:00:00 2001 From: Tiobon Date: Mon, 14 Apr 2025 18:33:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=B9=E8=AE=AD=E8=AE=A1=E5=88=92Excel?= =?UTF-8?q?=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../files/ExcelTemplate/F_TrainPlan.xlsx | Bin 0 -> 14935 bytes .../View/Ghre/Ghre_CourseScene.Dto.View.cs | 1 + .../Ghre/Ghre_CourseSceneServices.cs | 4 +- .../Ghre/Ghre_PlanServices.cs | 73 +++++++++++++++++- 4 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 Tiobon.Core.Api/wwwroot/files/ExcelTemplate/F_TrainPlan.xlsx diff --git a/Tiobon.Core.Api/wwwroot/files/ExcelTemplate/F_TrainPlan.xlsx b/Tiobon.Core.Api/wwwroot/files/ExcelTemplate/F_TrainPlan.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..194081b684c31119a217b802697f47d96dba6761 GIT binary patch literal 14935 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 Courses { get; set; } + public string BuiltInLabel { get; set; } public string CreditRuleName { get; set; } diff --git a/Tiobon.Core.Services/Ghre/Ghre_CourseSceneServices.cs b/Tiobon.Core.Services/Ghre/Ghre_CourseSceneServices.cs index 75060738..87ac36eb 100644 --- a/Tiobon.Core.Services/Ghre/Ghre_CourseSceneServices.cs +++ b/Tiobon.Core.Services/Ghre/Ghre_CourseSceneServices.cs @@ -34,7 +34,9 @@ public class Ghre_CourseSceneServices : BaseServices(); }); - + var coures = await Db.Queryable().Where(x => x.CourseSceneIds != null && (x.CourseSceneIds.Contains(body.id.ObjToString()) || x.CourseSceneId == body.id) && x.Status == Consts.DIC_COURSE_STATUS.RELEASED).ToListAsync(); + if (DT_TableDataT1.Any()) + DT_TableDataT1[0].Courses = coures; result.result.DT_TableDataT1 = DT_TableDataT1; return result; } diff --git a/Tiobon.Core.Services/Ghre/Ghre_PlanServices.cs b/Tiobon.Core.Services/Ghre/Ghre_PlanServices.cs index 981c3cb1..2a8ba504 100644 --- a/Tiobon.Core.Services/Ghre/Ghre_PlanServices.cs +++ b/Tiobon.Core.Services/Ghre/Ghre_PlanServices.cs @@ -1,4 +1,5 @@ -using static Tiobon.Core.Model.Consts; +using NPOI.SS.UserModel; +using static Tiobon.Core.Model.Consts; namespace Tiobon.Core.Services; @@ -372,4 +373,74 @@ public class Ghre_PlanServices : BaseServices> DownloadExcel(string menuName) + { + var physicsPath = $"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}wwwroot"; + var path = $"{$"{Path.DirectorySeparatorChar}files{Path.DirectorySeparatorChar}ExcelTemplate{Path.DirectorySeparatorChar}"}"; + if (!Directory.Exists(physicsPath + path)) + Directory.CreateDirectory(physicsPath + path); + + Type entityType = typeof(Ghre_Course); + var fileName = "F_TrainPlan.xlsx"; + //physicsPath = physicsPath + path + fileName; + + IWorkbook hssfworkbook; + ISheet sheet; + using (FileStream file = new FileStream(physicsPath + path + fileName, FileMode.Open, FileAccess.Read)) + { + //hssfworkbook = new HSSFWorkbook(file); + //hssfworkbook = new XSSFWorkbook(file); + hssfworkbook = WorkbookFactory.Create(file); + } + ISheet sheet2 = hssfworkbook.CreateSheet("下拉数据"); + + var newFileName = Guid.NewGuid() + ".xlsx"; + int listColIndex = 0; + //string sql = @"select 'Course' field, Id id, CourseNo no, CourseName name from Ghre_Course where IsEnable=1 and Status='Released'"; + //var dataSourceLists = await Db.Ado.SqlQueryAsync(sql); + //if (dataSourceLists.Any()) + //{ + // var types = new List + // { + // "学习记录" + // }; + + // types.ForEach(sheetName => + // { + // int sheetIndex = hssfworkbook.GetSheetIndex(sheetName); + // if (sheetIndex >= 0) + // { + // sheet = hssfworkbook.GetSheetAt(sheetIndex); + + // SetCellDropdownList(sheet, 0, 0, dataSourceLists.Select(x => x.name).ToArray()); + // } + + // }); + // MemoryStream ms; + // using (ms = new MemoryStream()) + // { + // hssfworkbook.Write(ms); + // ms.Flush(); + // hssfworkbook.Dispose(); + // //ms.Position = 0; + // //return ms; + // } + // using (FileStream fs = new FileStream(physicsPath + path + newFileName, FileMode.Create, FileAccess.Write)) + // { + // byte[] data = ms.ToArray(); + // fs.Write(data, 0, data.Length); + // fs.Flush(); + // } + + //} + + var physicsPath1 = physicsPath + path + fileName; + if (menuName == "F_TrainPlan_Temporary") + return ServiceResult.OprateSuccess("计划暂存_" + DateTimeHelper.ConvertToSecondString1(DateTime.Now) + ".xlsx", physicsPath1); + else + return ServiceResult.OprateSuccess("计划维护_" + DateTimeHelper.ConvertToSecondString1(DateTime.Now) + ".xlsx", physicsPath1); + + } } \ No newline at end of file