From cef8f7103472944e976222db61c4333d48853530 Mon Sep 17 00:00:00 2001 From: coffee <985942825@qq.com> Date: Sun, 19 Jan 2025 16:50:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=88=97=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/ExcelResolver/Excel/hero.xlsx | Bin 10662 -> 10646 bytes .../Editor/Core/Data/ClassCodeData.cs | 17 ++- .../ExcelResolverEditorWindow.ReadExcel.cs | 104 +++++++++--------- .../ExcelResolverEditorWindow.WriteSOData.cs | 21 ++-- 4 files changed, 73 insertions(+), 69 deletions(-) diff --git a/Assets/ExcelResolver/Excel/hero.xlsx b/Assets/ExcelResolver/Excel/hero.xlsx index 3e6d1a6ab4a19b603d1c40c00c78d999998eea00..4175e8844dbfbcbc9351728815b128bf6eda7bdc 100644 GIT binary patch delta 5454 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 B6sG_H delta 5444 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 Qg#T; fields = new(); - // public readonly FieldData[] fields; - public readonly int[] keyIndex; - // public readonly FieldData[] keyField; + public TableType tableType; + public string className; + public Dictionary fields = new(); + // public FieldData[] fields; + public int[] keyIndex; + // public FieldData[] keyField; - public ClassCodeData(TableType tableType, string className, Dictionary fields, int[] keyIndex) + public ClassCodeData(string className) { - this.tableType = tableType; this.className = $"{char.ToUpper(className[0])}{className.Substring(1)}"; - this.fields = fields; - this.keyIndex = keyIndex; // keyField = new FieldData[keyIndex.Length]; // for (int i = 0; i < keyIndex.Length; i++) diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs index e822688..48dbd69 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs @@ -29,11 +29,15 @@ namespace Tools.ExcelResolver.Editor Debug.LogError($"Excel:{excelFile.Name} don't have Sheet1 !!"); continue; } - + + var classCodeData = new ClassCodeData(excelFile.Name[..^5]); + var fieldDatas = GetFieldData(worksheet); - var tableType = CheckTableType(worksheet, out var keyIndex); + classCodeData.fields = fieldDatas; + var tableType = CheckTableType(worksheet, classCodeData.className, out var keyIndex); + classCodeData.tableType = tableType; + classCodeData.keyIndex = keyIndex; - var classCodeData = new ClassCodeData(tableType, excelFile.Name[..^5], fieldDatas, keyIndex); WriteDataCode(classCodeData); WriteSOCode(classCodeData); @@ -43,7 +47,7 @@ namespace Tools.ExcelResolver.Editor AssetDatabase.Refresh(); } - private TableType CheckTableType(ExcelWorksheet worksheet, out int[] keyIndex) + private TableType CheckTableType(ExcelWorksheet worksheet, string className, out int[] keyIndex) { var startColumn = worksheet.Dimension.Start.Column; // 起始列 var endColumn = worksheet.Dimension.End.Column; // 结束列 @@ -57,52 +61,52 @@ namespace Tools.ExcelResolver.Editor { type = TableType.SingleKeyTable; var configs = config.Split("|"); - Assert.IsTrue(configs.Length >= 2, "SingleKeyTable配置错误"); + Assert.IsTrue(configs.Length >= 2, $"'{className}'配置错误"); var key = configs[1]; var index = getKeyIndex(key); - Assert.IsTrue(index != -1, "SingleKeyTable配置错误"); + Assert.IsTrue(index != -1, $"'{className}'配置错误"); keyIndex = new[] { index }; } - else if (config.Contains("UnionMultiKeyTable")) - { - type = TableType.UnionMultiKeyTable; - var configs = config.Split("|"); - Assert.IsTrue(configs.Length >= 2, "UnionMultiKeyTable配置错误"); - var keys = configs[1].Split(","); - keyIndex = new int[keys.Length]; - for (int i = 0; i < keys.Length; i++) - { - var index = getKeyIndex(keys[i]); - Assert.IsTrue(index != -1, "UnionMultiKeyTable配置错误"); - keyIndex[i] = index; - } - } - else if (config.Contains("MultiKeyTable")) - { - type = TableType.MultiKeyTable; - var configs = config.Split("|"); - Assert.IsTrue(configs.Length >= 2, "UnionMultiKeyTable配置错误"); - var keys = configs[1].Split(","); - keyIndex = new int[keys.Length]; - for (int i = 0; i < keys.Length; i++) - { - var index = getKeyIndex(keys[i]); - Assert.IsTrue(index != -1, "UnionMultiKeyTable配置错误"); - keyIndex[i] = index; - } - } - else if (config.Contains("NotKetTable")) - { - type = TableType.NotKetTable; - } - else if (config.Contains("ColumnTable")) - { - type = TableType.ColumnTable; - } - else - { - Debug.LogError("配置错误"); - } + // else if (config.Contains("UnionMultiKeyTable")) + // { + // type = TableType.UnionMultiKeyTable; + // var configs = config.Split("|"); + // Assert.IsTrue(configs.Length >= 2, "UnionMultiKeyTable配置错误"); + // var keys = configs[1].Split(","); + // keyIndex = new int[keys.Length]; + // for (int i = 0; i < keys.Length; i++) + // { + // var index = getKeyIndex(keys[i]); + // Assert.IsTrue(index != -1, "UnionMultiKeyTable配置错误"); + // keyIndex[i] = index; + // } + // } + // else if (config.Contains("MultiKeyTable")) + // { + // type = TableType.MultiKeyTable; + // var configs = config.Split("|"); + // Assert.IsTrue(configs.Length >= 2, "UnionMultiKeyTable配置错误"); + // var keys = configs[1].Split(","); + // keyIndex = new int[keys.Length]; + // for (int i = 0; i < keys.Length; i++) + // { + // var index = getKeyIndex(keys[i]); + // Assert.IsTrue(index != -1, "UnionMultiKeyTable配置错误"); + // keyIndex[i] = index; + // } + // } + // else if (config.Contains("NotKetTable")) + // { + // type = TableType.NotKetTable; + // } + // else if (config.Contains("ColumnTable")) + // { + // type = TableType.ColumnTable; + // } + // else + // { + // Debug.LogError("配置错误"); + // } return type; @@ -126,16 +130,16 @@ namespace Tools.ExcelResolver.Editor private Dictionary GetFieldData(ExcelWorksheet worksheet) { var fieldDatas = new Dictionary(); - var endColumn = worksheet.Dimension.End.Column; - for (int col = 2; col <= endColumn; col++) + for (int col = 2; col <= worksheet.Dimension.End.Column; col++) { - if (string.IsNullOrEmpty(worksheet.Cells[2, col].Text)) continue; + var cellText = worksheet.Cells[2, col].Text; + if (string.IsNullOrEmpty(cellText) || cellText == "##") continue; FieldData fieldData = new FieldData { colIndex = col, - varName = worksheet.Cells[2, col].Text, + varName = cellText, typeString = worksheet.Cells[3, col].Text, type = ExcelResolverUtil.GetTTypeByString(worksheet.Cells[3, col].Text), info = worksheet.Cells[4, col].Text, diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs index 80d44fe..bf52485 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs @@ -19,10 +19,10 @@ namespace Tools.ExcelResolver.Editor ReadExcel(); } - foreach (var pair in classCodeDataDict) + foreach (var classCodeDataDictPair in classCodeDataDict) { - var worksheet = pair.Key; - var classCodeData = pair.Value; + var worksheet = classCodeDataDictPair.Key; + var classCodeData = classCodeDataDictPair.Value; Type soType = ExcelResolverUtil.GetOrCacheTypeByName(classCodeData.className); @@ -52,15 +52,18 @@ namespace Tools.ExcelResolver.Editor if (worksheet.Cells[row, 1].Text == "##") continue; ScriptableObject instance = ScriptableObject.CreateInstance(soType); - - for (int col = 2; col <= classCodeData.fields.Keys.Max(); col++) + + foreach (var pair in classCodeData.fields) { + var col = pair.Key; + var fieldData = pair.Value; + var cell = worksheet.Cells[row, col]; if (string.IsNullOrEmpty(cell.Text)) continue; - - object convertedValue = ExcelResolverUtil.ConvertCellValue(cell, classCodeData.fields[col].type, classCodeData.className); - FieldInfo fieldInfo = soType.GetField(classCodeData.fields[col].varName); - if (fieldInfo == null) throw new Exception($"目标类中不存在字段:{classCodeData.fields[col].varName}"); + + object convertedValue = ExcelResolverUtil.ConvertCellValue(cell, fieldData.type, classCodeData.className); + FieldInfo fieldInfo = soType.GetField(fieldData.varName); + if (fieldInfo == null) throw new Exception($"目标类中不存在字段:{fieldData.varName}"); fieldInfo.SetValue(instance, convertedValue); } AssetDatabase.CreateAsset(instance, $"{excelResolverConfig.SOPathRoot}/{classCodeData.className}_{row - 6}.asset");