From 2b5fb427dfe771fcd0324167a6519a5609f4ce7c Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 1 Jun 2023 16:53:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9B=BD=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Helper/ExcelExportHelper.cs | 94 +++++++++++-------- .../Service/Common/ExcelExportService.cs | 2 +- .../Service/Document/TrialDocumentService.cs | 4 +- 3 files changed, 58 insertions(+), 42 deletions(-) diff --git a/IRaCIS.Core.Application/Helper/ExcelExportHelper.cs b/IRaCIS.Core.Application/Helper/ExcelExportHelper.cs index c93c83f25..a7ea86977 100644 --- a/IRaCIS.Core.Application/Helper/ExcelExportHelper.cs +++ b/IRaCIS.Core.Application/Helper/ExcelExportHelper.cs @@ -76,7 +76,7 @@ public static class ExcelExportHelper { var beforeValue = itemDic[needTranslateProperty.Name]?.ToString(); - itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue?.ToLower()).FirstOrDefault()?.ValueCN ?? String.Empty; + itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue?.ToLower()).Select(t=>data.IsEn_US?t.Value:t.ValueCN).FirstOrDefault() ?? String.Empty; } } //普通翻译 或者某一标准翻译 @@ -85,7 +85,7 @@ public static class ExcelExportHelper var beforeValue = itemDic[needTranslateProperty.Name]?.ToString(); - itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue?.ToLower()).FirstOrDefault()?.ValueCN ?? String.Empty; + itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue?.ToLower()).Select(t => data.IsEn_US ? t.Value : t.ValueCN).FirstOrDefault() ?? String.Empty; } @@ -152,14 +152,19 @@ public static class ExcelExportHelper templateStream = memoryStream2; } - + + // 文件名称 从sheet里面取 + fileNmae = workbook.GetSheetName(0); #endregion + + + #region MiniExcel - var memoryStream = new MemoryStream(); + var memoryStream = new MemoryStream(); var config = new OpenXmlConfiguration() { @@ -170,38 +175,10 @@ public static class ExcelExportHelper memoryStream.Seek(0, SeekOrigin.Begin); - #region 根据中英文 删除sheet - //var workbook = new XSSFWorkbook(memoryStream); - - //int sheetCount = workbook.NumberOfSheets; - - //if (sheetCount == 2) - //{ - - // if (data.IsEn_US) - // { - // workbook.RemoveSheetAt(0); - // } - // else - // { - // workbook.RemoveSheetAt(1); - // } - - // var memoryStream2 = new MemoryStream(); - // workbook.Write(memoryStream2); - - // memoryStream2.Seek(0, SeekOrigin.Begin); - - // memoryStream = memoryStream2; - //} - - - - #endregion return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { - FileDownloadName = $"{exportFileNamePrefix}_{fileNmae.Substring(0, fileNmae.LastIndexOf('.'))}_{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx" + FileDownloadName = $"{exportFileNamePrefix}_{fileNmae/*.Substring(0, fileNmae.LastIndexOf('.'))*/}_{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx" }; #endregion @@ -222,10 +199,12 @@ public static class ExcelExportHelper - public static async Task<(MemoryStream, string)> DataExport_NpoiTestAsync(string code, object data, IRepository _commonDocumentRepository, IWebHostEnvironment _hostEnvironment, IDictionaryService? _dictionaryService = null, Type? translateType = null, CriterionType? criterionType = null) + public static async Task<(MemoryStream, string)> DataExport_NpoiTestAsync(string code, ExcelExportInfo data, IRepository _commonDocumentRepository, IWebHostEnvironment _hostEnvironment, IDictionaryService? _dictionaryService = null, Type? translateType = null, CriterionType? criterionType = null) { //判断是否有字典翻译 + object translateData = data; + if (_dictionaryService != null && translateType != null) { @@ -273,7 +252,7 @@ public static class ExcelExportHelper { var beforeValue = itemDic[needTranslateProperty.Name]?.ToString(); - itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue?.ToLower()).FirstOrDefault()?.ValueCN ?? String.Empty; + itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue?.ToLower()).Select(t => data.IsEn_US ? t.Value : t.ValueCN).FirstOrDefault() ?? String.Empty; } } //普通翻译 或者某一标准翻译 @@ -282,7 +261,7 @@ public static class ExcelExportHelper var beforeValue = itemDic[needTranslateProperty.Name]?.ToString(); - itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue?.ToLower()).FirstOrDefault()?.ValueCN ?? String.Empty; + itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue?.ToLower()).Select(t => data.IsEn_US ? t.Value : t.ValueCN).FirstOrDefault() ?? String.Empty; } @@ -299,8 +278,8 @@ public static class ExcelExportHelper } - data = dic; - + //data = dic; + translateData = dic; } @@ -311,6 +290,43 @@ public static class ExcelExportHelper //模板路径 var tplPath = physicalPath; + #region 根据中英文 删除模板sheet + + // 打开模板文件 + var templateFile = new FileStream(tplPath, FileMode.Open, FileAccess.Read); + + // 获取文件流 + var templateStream = new MemoryStream(); + templateFile.CopyTo(templateStream); + templateStream.Seek(0, SeekOrigin.Begin); + + var workbook = new XSSFWorkbook(templateStream); + + int sheetCount = workbook.NumberOfSheets; + + if (sheetCount == 2) + { + if (data.IsEn_US) + { + workbook.RemoveSheetAt(0); + } + else + { + workbook.RemoveSheetAt(1); + } + + var memoryStream2 = new MemoryStream(); + workbook.Write(memoryStream2); + + memoryStream2.Seek(0, SeekOrigin.Begin); + + templateStream = memoryStream2; + } + + // 文件名称 从sheet里面取 + fileName = workbook.GetSheetName(0); + #endregion + #region MiniExcel var memoryStream = new MemoryStream(); @@ -320,7 +336,7 @@ public static class ExcelExportHelper IgnoreTemplateParameterMissing = true, }; - await MiniExcel.SaveAsByTemplateAsync(memoryStream, tplPath, data, config); + await MiniExcel.SaveAsByTemplateAsync(memoryStream, tplPath, translateData, config); memoryStream.Seek(0, SeekOrigin.Begin); diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index b3d9c88fd..243781f70 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -338,7 +338,7 @@ namespace IRaCIS.Core.Application.Service.Common return new FileStreamResult(memoryStream2, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { - FileDownloadName = $"{exportInfo.ResearchProgramNo}_{exportInfo.CriterionName}_{fileName.Substring(startIndex: 0, fileName.LastIndexOf('.'))}_{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx" + FileDownloadName = $"{exportInfo.ResearchProgramNo}_{exportInfo.CriterionName}_{fileName/*.Substring(startIndex: 0, fileName.LastIndexOf('.'))*/}_{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx" }; } diff --git a/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs b/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs index 598d8a3b8..01a758271 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs @@ -399,8 +399,8 @@ namespace IRaCIS.Core.Application.Services [HttpGet("{trialId:guid}")] public async Task GetTrialDocAndSystemDocType(Guid trialId) { - var result = await _trialDocumentRepository.Where(t => t.TrialId == trialId).Select(t => new { FileType = t.FileType.Value, t.FileTypeId }) - .Union(_systemDocumentRepository.Select(t => new { FileType = t.FileType.Value, t.FileTypeId })) + var result = await _trialDocumentRepository.Where(t => t.TrialId == trialId).Select(t => new { FileType = _userInfo.IsEn_Us? t.FileType.Value :t.FileType.ValueCN, t.FileTypeId }) + .Union(_systemDocumentRepository.Select(t => new { FileType = _userInfo.IsEn_Us ? t.FileType.Value : t.FileType.ValueCN, t.FileTypeId })) .ToListAsync(); return ResponseOutput.Ok(result);