术语替换-先完整准确匹配,匹配了就跳过,否则就关键字匹配替换
continuous-integration/drone/push Build is running
Details
continuous-integration/drone/push Build is running
Details
parent
152a142d82
commit
2b03f382bd
|
|
@ -166,6 +166,31 @@ public static class ExcelExportHelper
|
||||||
// ClosedXML 获取第一个工作表
|
// ClosedXML 获取第一个工作表
|
||||||
var worksheet = workbook.Worksheet(1); // 索引从1开始
|
var worksheet = workbook.Worksheet(1); // 索引从1开始
|
||||||
|
|
||||||
|
#region sheet 名字修改 以及导表文件名字修改
|
||||||
|
|
||||||
|
var currentSheetName = worksheet.Name;
|
||||||
|
|
||||||
|
// 查找匹配的工作表名(支持部分匹配)
|
||||||
|
var findObj = replaceObjectList.FirstOrDefault(t => currentSheetName.Contains(t.Name));
|
||||||
|
|
||||||
|
if (findObj != null)
|
||||||
|
{
|
||||||
|
// 直接匹配或替换包含关键字的工作表名
|
||||||
|
var newSheetName = currentSheetName.Replace(findObj.Name, findObj.TrialName);
|
||||||
|
worksheet.Name = newSheetName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var findFileName = replaceObjectList.FirstOrDefault(t => fileName.Contains(t.Name));
|
||||||
|
|
||||||
|
if (findFileName != null)
|
||||||
|
{
|
||||||
|
// 直接匹配或替换包含关键字的工作表名
|
||||||
|
var newFileName = currentSheetName.Replace(findFileName.Name, findFileName.TrialName);
|
||||||
|
fileName = newFileName;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
// 获取使用的行范围(不包括空行)
|
// 获取使用的行范围(不包括空行)
|
||||||
var rowsUsed = worksheet.RowsUsed();
|
var rowsUsed = worksheet.RowsUsed();
|
||||||
|
|
||||||
|
|
@ -178,11 +203,35 @@ public static class ExcelExportHelper
|
||||||
{
|
{
|
||||||
var cellValue = cell.GetString();
|
var cellValue = cell.GetString();
|
||||||
|
|
||||||
var find = replaceObjectList.FirstOrDefault(t => t.Name == cellValue);
|
var newValue = cellValue;
|
||||||
|
var isChanged = false;
|
||||||
|
|
||||||
|
var find = replaceObjectList.FirstOrDefault(t => cellValue.Trim() == t.Name.Trim());
|
||||||
|
|
||||||
if (find != null)
|
if (find != null)
|
||||||
{
|
{
|
||||||
cell.SetValue(find.TrialName);
|
newValue = newValue.Replace(find.Name, find.TrialName);
|
||||||
|
|
||||||
|
isChanged = true;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 遍历所有替换规则,进行关键字匹配替换
|
||||||
|
foreach (var replaceItem in replaceObjectList.Where(t => cellValue.Contains(t.Name)))
|
||||||
|
{
|
||||||
|
|
||||||
|
newValue = newValue.Replace(replaceItem.Name, replaceItem.TrialName);
|
||||||
|
isChanged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (isChanged)
|
||||||
|
{
|
||||||
|
cell.SetValue(newValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -192,7 +241,7 @@ public static class ExcelExportHelper
|
||||||
workbook.SaveAs(memoryStream2);
|
workbook.SaveAs(memoryStream2);
|
||||||
memoryStream2.Seek(0, SeekOrigin.Begin);
|
memoryStream2.Seek(0, SeekOrigin.Begin);
|
||||||
templateStream = memoryStream2;
|
templateStream = memoryStream2;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -305,7 +354,7 @@ public static class ExcelExportHelper
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static async Task<(MemoryStream, string)> DataExport_NpoiTestAsync(string code, ExcelExportInfo data, IRepository<CommonDocument> _commonDocumentRepository, IWebHostEnvironment _hostEnvironment, IDictionaryService? _dictionaryService = null, Type? translateType = null, CriterionType? criterionType = null, DynamicColumnConfig? dynamicColumnConfig = null)
|
public static async Task<(MemoryStream, string)> DataExport_ClosedXMLAsync(string code, ExcelExportInfo data, IRepository<CommonDocument> _commonDocumentRepository, IWebHostEnvironment _hostEnvironment, IDictionaryService? _dictionaryService = null, Type? translateType = null, CriterionType? criterionType = null, DynamicColumnConfig? dynamicColumnConfig = null)
|
||||||
{
|
{
|
||||||
var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US;
|
var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US;
|
||||||
//判断是否有字典翻译
|
//判断是否有字典翻译
|
||||||
|
|
@ -444,30 +493,76 @@ public static class ExcelExportHelper
|
||||||
// ClosedXML 获取第一个工作表
|
// ClosedXML 获取第一个工作表
|
||||||
var worksheet = workbook.Worksheet(1); // 索引从1开始
|
var worksheet = workbook.Worksheet(1); // 索引从1开始
|
||||||
|
|
||||||
|
#region sheet 名字修改 以及导表文件名字修改
|
||||||
|
|
||||||
|
var currentSheetName = worksheet.Name;
|
||||||
|
|
||||||
|
// 查找匹配的工作表名(支持部分匹配)
|
||||||
|
var findObj = replaceObjectList.FirstOrDefault(t => currentSheetName.Contains(t.Name));
|
||||||
|
|
||||||
|
if (findObj != null)
|
||||||
|
{
|
||||||
|
// 直接匹配或替换包含关键字的工作表名
|
||||||
|
var newSheetName = currentSheetName.Replace(findObj.Name, findObj.TrialName);
|
||||||
|
worksheet.Name = newSheetName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var findFileName = replaceObjectList.FirstOrDefault(t => fileName.Contains(t.Name));
|
||||||
|
|
||||||
|
if (findFileName != null)
|
||||||
|
{
|
||||||
|
// 直接匹配或替换包含关键字的工作表名
|
||||||
|
var newFileName = currentSheetName.Replace(findFileName.Name, findFileName.TrialName);
|
||||||
|
fileName = newFileName;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
// 获取使用的行范围(不包括空行)
|
// 获取使用的行范围(不包括空行)
|
||||||
var rowsUsed = worksheet.RowsUsed();
|
var rowsUsed = worksheet.RowsUsed();
|
||||||
|
|
||||||
foreach (var row in rowsUsed)
|
foreach (var row in rowsUsed)
|
||||||
{
|
{
|
||||||
// 获取该行使用的列范围
|
// 获取该行有数据的单元格
|
||||||
var cellsUsed = row.CellsUsed();
|
var cellsUsed = row.CellsUsed(c => c.DataType == XLDataType.Text);
|
||||||
|
|
||||||
foreach (var cell in cellsUsed)
|
foreach (var cell in cellsUsed)
|
||||||
{
|
{
|
||||||
|
var cellValue = cell.GetString();
|
||||||
|
|
||||||
var cellValue = cell.GetString();
|
var newValue = cellValue;
|
||||||
|
var isChanged = false;
|
||||||
|
|
||||||
var find = replaceObjectList.FirstOrDefault(t => t.Name == cellValue);
|
var find = replaceObjectList.FirstOrDefault(t => cellValue.Trim() == t.Name.Trim());
|
||||||
if (find != null)
|
|
||||||
|
if (find != null)
|
||||||
|
{
|
||||||
|
newValue = newValue.Replace(find.Name, find.TrialName);
|
||||||
|
|
||||||
|
isChanged = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 遍历所有替换规则,进行关键字匹配替换
|
||||||
|
foreach (var replaceItem in replaceObjectList.Where(t => cellValue.Contains(t.Name)))
|
||||||
{
|
{
|
||||||
cell.SetValue(find.TrialName);
|
|
||||||
|
newValue = newValue.Replace(replaceItem.Name, replaceItem.TrialName);
|
||||||
|
isChanged = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (isChanged)
|
||||||
|
{
|
||||||
|
cell.SetValue(newValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -479,7 +574,7 @@ public static class ExcelExportHelper
|
||||||
var worksheet = workbook.Worksheet(1);
|
var worksheet = workbook.Worksheet(1);
|
||||||
|
|
||||||
// 获取行(ClosedXML 行索引从1开始,AutoColumnTitleRowIndex 已经改了保持不变)
|
// 获取行(ClosedXML 行索引从1开始,AutoColumnTitleRowIndex 已经改了保持不变)
|
||||||
var cdicsRow = worksheet.Row(dynamicColumnConfig.AutoColumnTitleRowIndex-1); // 原 NPOI: -1
|
var cdicsRow = worksheet.Row(dynamicColumnConfig.AutoColumnTitleRowIndex - 1); // 原 NPOI: -1
|
||||||
var titelRow = worksheet.Row(dynamicColumnConfig.AutoColumnTitleRowIndex); // 原 NPOI: 不变
|
var titelRow = worksheet.Row(dynamicColumnConfig.AutoColumnTitleRowIndex); // 原 NPOI: 不变
|
||||||
var templateRow = worksheet.Row(dynamicColumnConfig.AutoColumnTitleRowIndex + 1); // 原 NPOI: +1
|
var templateRow = worksheet.Row(dynamicColumnConfig.AutoColumnTitleRowIndex + 1); // 原 NPOI: +1
|
||||||
|
|
||||||
|
|
@ -518,9 +613,9 @@ public static class ExcelExportHelper
|
||||||
// 将后面的列向前移动
|
// 将后面的列向前移动
|
||||||
for (var i = 0; i < originTotalEndIndex - removeIndex; i++)
|
for (var i = 0; i < originTotalEndIndex - removeIndex; i++)
|
||||||
{
|
{
|
||||||
|
|
||||||
int currentCol = removeIndex + i ;
|
int currentCol = removeIndex + i;
|
||||||
int nextCol = removeIndex + i + 1;
|
int nextCol = removeIndex + i + 1;
|
||||||
|
|
||||||
Console.WriteLine(titelRow.Cell(nextCol).GetString());
|
Console.WriteLine(titelRow.Cell(nextCol).GetString());
|
||||||
|
|
||||||
|
|
@ -537,7 +632,7 @@ public static class ExcelExportHelper
|
||||||
// 创建新的列(ClosedXML 不需要显式创建,直接设置值即可)
|
// 创建新的列(ClosedXML 不需要显式创建,直接设置值即可)
|
||||||
for (int i = originRemoveEndIndex; i < originRemoveEndIndex + needAddCount; i++)
|
for (int i = originRemoveEndIndex; i < originRemoveEndIndex + needAddCount; i++)
|
||||||
{
|
{
|
||||||
int colIndex = i + 1;
|
int colIndex = i + 1;
|
||||||
|
|
||||||
// 不需要 CreateCell,直接设置值即可
|
// 不需要 CreateCell,直接设置值即可
|
||||||
if (isCdics)
|
if (isCdics)
|
||||||
|
|
@ -553,8 +648,8 @@ public static class ExcelExportHelper
|
||||||
|
|
||||||
for (int i = totalColunmEndIndex; i > dynamicColunmEndIndex; i--)
|
for (int i = totalColunmEndIndex; i > dynamicColunmEndIndex; i--)
|
||||||
{
|
{
|
||||||
int currentCol = i ;
|
int currentCol = i;
|
||||||
int sourceCol = i - gap ;
|
int sourceCol = i - gap;
|
||||||
|
|
||||||
titelRow.Cell(currentCol).SetValue(titelRow.Cell(sourceCol).GetString());
|
titelRow.Cell(currentCol).SetValue(titelRow.Cell(sourceCol).GetString());
|
||||||
templateRow.Cell(currentCol).SetValue(templateRow.Cell(sourceCol).GetString());
|
templateRow.Cell(currentCol).SetValue(templateRow.Cell(sourceCol).GetString());
|
||||||
|
|
@ -568,7 +663,7 @@ public static class ExcelExportHelper
|
||||||
// 设置动态 Title
|
// 设置动态 Title
|
||||||
for (int i = dynamicColunmStartIndex; i < dynamicColunmStartIndex + needAddCount; i++)
|
for (int i = dynamicColunmStartIndex; i < dynamicColunmStartIndex + needAddCount; i++)
|
||||||
{
|
{
|
||||||
int colIndex = i ;
|
int colIndex = i;
|
||||||
var index = i - dynamicColunmStartIndex;
|
var index = i - dynamicColunmStartIndex;
|
||||||
var name = dynamicColumnConfig.ColumnIdNameList[index].Name;
|
var name = dynamicColumnConfig.ColumnIdNameList[index].Name;
|
||||||
|
|
||||||
|
|
@ -649,11 +744,11 @@ public static class ExcelExportHelper
|
||||||
|
|
||||||
if (isExcelAddDataWithName)
|
if (isExcelAddDataWithName)
|
||||||
{
|
{
|
||||||
writeIndex = dynamicColumnConfig.ColumnNameList.IndexOf(iteObjDic[dynamicColumnConfig.DynamicItemTitleName].ToString()) + dynamicColumnConfig.AutoColumnStartIndex ; // +1 因为 ClosedXML 列从1开始
|
writeIndex = dynamicColumnConfig.ColumnNameList.IndexOf(iteObjDic[dynamicColumnConfig.DynamicItemTitleName].ToString()) + dynamicColumnConfig.AutoColumnStartIndex; // +1 因为 ClosedXML 列从1开始
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
writeIndex = dynamicColumnConfig.ColumnIdList.IndexOf(iteObjDic[dynamicColumnConfig.DynamicItemTitleId].ToString()) + dynamicColumnConfig.AutoColumnStartIndex ; // +1 因为 ClosedXML 列从1开始
|
writeIndex = dynamicColumnConfig.ColumnIdList.IndexOf(iteObjDic[dynamicColumnConfig.DynamicItemTitleId].ToString()) + dynamicColumnConfig.AutoColumnStartIndex; // +1 因为 ClosedXML 列从1开始
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17492,17 +17492,17 @@
|
||||||
</member>
|
</member>
|
||||||
<member name="F:IRaCIS.Core.Application.ViewModel.AccessToDialogueEnum.Question">
|
<member name="F:IRaCIS.Core.Application.ViewModel.AccessToDialogueEnum.Question">
|
||||||
<summary>
|
<summary>
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
质疑
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:IRaCIS.Core.Application.ViewModel.AccessToDialogueEnum.Consistency">
|
<member name="F:IRaCIS.Core.Application.ViewModel.AccessToDialogueEnum.Consistency">
|
||||||
<summary>
|
<summary>
|
||||||
һ<EFBFBD><EFBFBD><EFBFBD>Ժ˲<EFBFBD>
|
一致性核查
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.ViewModel.CopyFrontAuditConfigItemDto">
|
<member name="T:IRaCIS.Core.Application.ViewModel.CopyFrontAuditConfigItemDto">
|
||||||
<summary>
|
<summary>
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
复制
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.ViewModel.SystemNoticeView">
|
<member name="T:IRaCIS.Core.Application.ViewModel.SystemNoticeView">
|
||||||
|
|
|
||||||
|
|
@ -155,7 +155,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
var (memoryStream, fileName) = await ExcelExportHelper.DataExport_NpoiTestAsync(StaticData.Export.TrialQCResult_Export, exportInfo, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(QCQuestionResult_Export), dynamicColumnConfig: dynamicColumnConfig);
|
var (memoryStream, fileName) = await ExcelExportHelper.DataExport_ClosedXMLAsync(StaticData.Export.TrialQCResult_Export, exportInfo, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(QCQuestionResult_Export), dynamicColumnConfig: dynamicColumnConfig);
|
||||||
|
|
||||||
return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
|
return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
|
||||||
{
|
{
|
||||||
|
|
@ -1227,7 +1227,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||||
|
|
||||||
|
|
||||||
var (memoryStream, fileName) = await ExcelExportHelper.DataExport_NpoiTestAsync(StaticData.Export.TrialSubjectProgressList_Export, exportInfo, /*"", */_commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(SubjectProgressDto));
|
var (memoryStream, fileName) = await ExcelExportHelper.DataExport_ClosedXMLAsync(StaticData.Export.TrialSubjectProgressList_Export, exportInfo, /*"", */_commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(SubjectProgressDto));
|
||||||
|
|
||||||
|
|
||||||
// 使用 ClosedXML 进行二次处理
|
// 使用 ClosedXML 进行二次处理
|
||||||
|
|
@ -2717,7 +2717,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
var (memoryStream, fileName) = await ExcelExportHelper.DataExport_NpoiTestAsync(export_Template, exportInfo, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(AnalysisDynamicCommonExport), criterion.CriterionType, dynamicColumnConfig);
|
var (memoryStream, fileName) = await ExcelExportHelper.DataExport_ClosedXMLAsync(export_Template, exportInfo, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(AnalysisDynamicCommonExport), criterion.CriterionType, dynamicColumnConfig);
|
||||||
|
|
||||||
return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
|
return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
|
||||||
{
|
{
|
||||||
|
|
@ -3648,12 +3648,12 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||||
|
|
||||||
if (inQuery.ReadingExportType == ExportResult.NoneTumorCDISC)
|
if (inQuery.ReadingExportType == ExportResult.NoneTumorCDISC)
|
||||||
{
|
{
|
||||||
(memoryStream, fileName) = await ExcelExportHelper.DataExport_NpoiTestAsync(export_Template, exportInfo, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(CommonEvaluationExport), criterion.CriterionType, dynamicColumnConfig);
|
(memoryStream, fileName) = await ExcelExportHelper.DataExport_ClosedXMLAsync(export_Template, exportInfo, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(CommonEvaluationExport), criterion.CriterionType, dynamicColumnConfig);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
(memoryStream, fileName) = await ExcelExportHelper.DataExport_NpoiTestAsync(export_Template, exportInfo, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(CommonEvaluationExport), criterion.CriterionType, dynamicColumnConfig);
|
(memoryStream, fileName) = await ExcelExportHelper.DataExport_ClosedXMLAsync(export_Template, exportInfo, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(CommonEvaluationExport), criterion.CriterionType, dynamicColumnConfig);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue