diff --git a/.vs/ExcelTool/v15/.suo b/.vs/ExcelTool/v15/.suo index 8054024..0434b01 100644 Binary files a/.vs/ExcelTool/v15/.suo and b/.vs/ExcelTool/v15/.suo differ diff --git a/.vs/ExcelTool/v15/Server/sqlite3/storage.ide-shm b/.vs/ExcelTool/v15/Server/sqlite3/storage.ide-shm index 937ac09..d40854b 100644 Binary files a/.vs/ExcelTool/v15/Server/sqlite3/storage.ide-shm and b/.vs/ExcelTool/v15/Server/sqlite3/storage.ide-shm differ diff --git a/.vs/ExcelTool/v15/Server/sqlite3/storage.ide-wal b/.vs/ExcelTool/v15/Server/sqlite3/storage.ide-wal index 127b1e6..ad2ce38 100644 Binary files a/.vs/ExcelTool/v15/Server/sqlite3/storage.ide-wal and b/.vs/ExcelTool/v15/Server/sqlite3/storage.ide-wal differ diff --git a/ExcelTool/CsvHelper.cs b/ExcelTool/CsvHelper.cs index 6c2fb72..d8d9e9c 100644 --- a/ExcelTool/CsvHelper.cs +++ b/ExcelTool/CsvHelper.cs @@ -231,208 +231,5 @@ namespace ExcelTool return null; } } - - /// - /// 生成对应的C#Model类 - /// - /// - /// - public static bool GenCSharpModel(string fileName) - { - try - { - FileInfo fileInfo = new FileInfo(fileName); - var csvName = fileInfo.Name.Remove(fileInfo.Name.IndexOf(".csv")); - var dt = CSVHeader(fileName); - var headers = dt.Headers(); - //前面是字段,后面是类型 vector是3个float [1.1,2.2,3.3] - //foreach (var header in headers) - //{ - // ConsoleHelper.WriteInfoLine($"{header.Item1}|{header.Item2}"); - //} - StringBuilder sb = new StringBuilder(); - sb.Append($"/*\n * auto generated by tools(注意:千万不要手动修改本文件)\n * {csvName}\n */\n"); - sb.Append("using System;\nusing System.IO;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Linq;\n\n"); - sb.Append("[Serializable]\n"); - sb.Append($"public class {csvName} : IBinarySerializable\n"); - sb.Append("{\n"); - foreach (var header in headers) - { - var type = header.Item2.ToLower(); - if (type.Equals("vector")) - { - sb.Append(string.Format("\tpublic List {0}", header.Item1)); - } - else if (type.Equals("list")) - { - sb.Append(string.Format("\tpublic List> {0}", header.Item1)); - } - else - { - sb.Append(string.Format("\tpublic {0} {1}", header.Item2.ToLower(), header.Item1)); - } - sb.Append(" { get; set; }\n"); - } - sb.Append("\n\tpublic void DeSerialize(BinaryReader reader)\n"); - sb.Append("\t{\n"); - foreach (var header in headers) - { - var type = header.Item2.ToLower(); - var name = header.Item1.ToString(); - if (type.Equals("int")) - { - sb.Append($"\t\t{name} = reader.ReadInt32();\n"); - } - else if (type.Equals("bool")) - { - sb.Append($"\t\t{name} = reader.ReadBoolean();\n"); - } - else if (type.Equals("float")) - { - sb.Append($"\t\t{name} = reader.ReadSingle();\n"); - } - else if (type.Equals("string")) - { - sb.Append($"\t\t{name} = reader.ReadString();\n"); - } - else if (type.Equals("vector")) - { - sb.Append($"\t\tvar {name}Count = reader.ReadInt32();\n"); - sb.Append($"\t\tif ({name}Count > 0)\n"); - sb.Append("\t\t{\n"); - sb.Append($"\t\t\t{name} = new List();\n"); - sb.Append($"\t\t\tfor (int i = 0; i < {name}Count; i++)\n"); - sb.Append("\t\t\t{\n"); - sb.Append($"\t\t\t\t{name}.Add(reader.ReadSingle());\n"); - sb.Append("\t\t\t}\n"); - sb.Append("\t\t}\n"); - sb.Append("\t\telse\n"); - sb.Append("\t\t{\n"); - sb.Append($"\t\t\t{name} = null;\n"); - sb.Append("\t\t}\n"); - } - else if (type.Equals("list")) - { - sb.Append($"\t\tvar {name}Count = reader.ReadInt32();\n"); - sb.Append($"\t\tif ({name}Count > 0)\n"); - sb.Append("\t\t{\n"); - sb.Append($"\t\t\t{name} = new List>();\n"); - sb.Append($"\t\t\tfor (int i = 0; i < {name}Count; i++)\n"); - sb.Append("\t\t\t{\n"); - sb.Append($"\t\t\t\tvar tempList = new List();\n"); - sb.Append($"\t\t\t\tvar tempListCount = reader.ReadInt32();\n"); - sb.Append($"\t\t\t\tfor (int j = 0; j < tempListCount; j++)\n"); - sb.Append("\t\t\t\t{\n"); - sb.Append($"\t\t\t\t\ttempList.Add(reader.ReadSingle());\n"); - sb.Append("\t\t\t\t}\n"); - sb.Append($"\t\t\t\t{name}.Add(tempList);\n"); - sb.Append("\t\t\t}\n"); - sb.Append("\t\t}\n"); - sb.Append("\t\telse\n"); - sb.Append("\t\t{\n"); - sb.Append($"\t\t\t{name} = null;\n"); - sb.Append("\t\t}\n"); - } - else - { - ConsoleHelper.WriteErrorLine($"类型:{type}没有解析 {fileName}处理异常"); - return false; - } - } - sb.Append("\t}\n\n"); - sb.Append("\tpublic void Serialize(BinaryWriter writer)\n"); - sb.Append("\t{\n"); - foreach (var header in headers) - { - var type = header.Item2.ToLower(); - var name = header.Item1.ToString(); - if (type.Equals("int") || type.Equals("bool") || type.Equals("float") || type.Equals("string")) - { - sb.Append($"\t\twriter.Write({name});\n"); - } - else if (type.Equals("vector")) - { - sb.Append($"\t\tif ({name} == null || {name}.Count == 0)\n"); - sb.Append("\t\t{\n"); - sb.Append("\t\t\twriter.Write(0);\n"); - sb.Append("\t\t}\n"); - sb.Append("\t\telse\n"); - sb.Append("\t\t{\n"); - sb.Append($"\t\t\twriter.Write({name}.Count);\n"); - sb.Append($"\t\t\tfor (int i = 0; i < {name}.Count; i++)\n"); - sb.Append("\t\t\t{\n"); - sb.Append($"\t\t\t\twriter.Write({name}[i]);\n"); - sb.Append("\t\t\t}\n"); - sb.Append("\t\t}\n"); - } - else if (type.Equals("list")) - { - sb.Append($"\t\tif ({name} == null || {name}.Count == 0)\n"); - sb.Append("\t\t{\n"); - sb.Append("\t\t\twriter.Write(0);\n"); - sb.Append("\t\t}\n"); - sb.Append("\t\telse\n"); - sb.Append("\t\t{\n"); - sb.Append($"\t\t\twriter.Write({name}.Count);\n"); - sb.Append($"\t\t\tfor (int i = 0; i < {name}.Count; i++)\n"); - sb.Append("\t\t\t{\n"); - sb.Append($"\t\t\t\twriter.Write({name}[i].Count);\n"); - sb.Append($"\t\t\t\tfor (int j = 0; j < {name}[i].Count; j++)\n"); - sb.Append("\t\t\t\t{\n"); - sb.Append($"\t\t\t\t\twriter.Write({name}[i][j]);\n"); - sb.Append("\t\t\t\t}\n"); - sb.Append("\t\t\t}\n"); - sb.Append("\t\t}\n"); - } - else - { - ConsoleHelper.WriteErrorLine($"类型:{type}没有解析 {fileName}处理异常"); - return false; - } - } - sb.Append("\t}\n"); - sb.Append("}\n"); - - sb.Append("\n"); - sb.Append("[Serializable]\n"); - sb.Append($"public partial class {csvName}Config : IBinarySerializable\n"); - sb.Append("{\n"); - sb.Append($"\tpublic List<{csvName}> {csvName}Infos = new List<{csvName}>();\n"); - sb.Append($"\tpublic void DeSerialize(BinaryReader reader)\n"); - sb.Append("\t{\n"); - sb.Append($"\t\tint count = reader.ReadInt32();\n"); - sb.Append($"\t\tfor (int i = 0;i < count; i++)\n"); - sb.Append("\t\t{\n"); - sb.Append($"\t\t\t{csvName} tempData = new {csvName}();\n"); - sb.Append($"\t\t\ttempData.DeSerialize(reader);\n"); - sb.Append($"\t\t\t{csvName}Infos.Add(tempData);\n"); - sb.Append("\t\t}\n"); - sb.Append("\t}\n"); - sb.Append("\n"); - sb.Append("\tpublic void Serialize(BinaryWriter writer)\n"); - sb.Append("\t{\n"); - sb.Append($"\t\twriter.Write({csvName}Infos.Count);\n"); - sb.Append($"\t\tfor (int i = 0; i < {csvName}Infos.Count; i++)\n"); - sb.Append("\t\t{\n"); - sb.Append($"\t\t\t{csvName}Infos[i].Serialize(writer);\n"); - sb.Append("\t\t}\n"); - sb.Append("\t}\n\n"); - sb.Append($"\tpublic IEnumerable<{csvName}> QueryById(int id)\n"); - sb.Append("\t{\n"); - sb.Append($"\t\tvar datas = from d in {csvName}Infos\n"); - sb.Append($"\t\t\t\t\twhere d.Id == id\n"); - sb.Append($"\t\t\t\t\tselect d;\n"); - sb.Append("\t\treturn datas;\n"); - sb.Append("\t}\n"); - sb.Append("}\n"); - FileManager.WriteToFile(Path.Combine(fileInfo.DirectoryName, $"{csvName}.cs"), sb.ToString()); - return true; - } - catch (Exception ex) - { - ConsoleHelper.WriteErrorLine(ex.ToString()); - return false; - } - } } } diff --git a/ExcelTool/Parser/GenModels.cs b/ExcelTool/Parser/GenModels.cs index 693585e..1de69a7 100644 --- a/ExcelTool/Parser/GenModels.cs +++ b/ExcelTool/Parser/GenModels.cs @@ -30,27 +30,11 @@ namespace ExcelTool } var headers = ExcelHelper.ExcelHeaders(fileName); var excelName = fileInfo.Name.Remove(fileInfo.Name.IndexOf(".xlsx")); - //var dt = ExcelHeader(fileName); - //var headers = dt.Headers(); - //List notesStr = new List(); - //if (dt.Rows != null && dt.Rows.Count > 0) - //{ - // var notes = dt.Rows[0]; - // for (int i = 0; i < dt.Columns.Count; i++) - // { - // notesStr.Add(notes[i].ToString()); - // } - //} - //前面是字段,后面是类型 vector是3个float [1.1,2.2,3.3] - //foreach (var header in headers) - //{ - // ConsoleHelper.WriteInfoLine($"{header.Item1}|{header.Item2}"); - //} StringBuilder sb = new StringBuilder(); sb.Append($"/*\n * auto generated by tools(注意:千万不要手动修改本文件)\n * {excelName}\n */\n"); sb.Append("using System;\nusing System.IO;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Linq;\n\n"); sb.Append("[Serializable]\n"); - sb.Append($"public class {excelName} : IBinarySerializable\n"); + sb.Append($"public partial class {excelName} : IBinarySerializable\n"); sb.Append("{\n"); for (int i = 0; i < headers.Count; i++) { diff --git a/ExcelTool/bin/Debug/ExcelTool.exe b/ExcelTool/bin/Debug/ExcelTool.exe index c8246a1..bf703cd 100644 Binary files a/ExcelTool/bin/Debug/ExcelTool.exe and b/ExcelTool/bin/Debug/ExcelTool.exe differ diff --git a/ExcelTool/bin/Debug/ExcelTool.pdb b/ExcelTool/bin/Debug/ExcelTool.pdb index 95a2ecd..e851fdd 100644 Binary files a/ExcelTool/bin/Debug/ExcelTool.pdb and b/ExcelTool/bin/Debug/ExcelTool.pdb differ diff --git a/ExcelTool/bin/Debug/avatarguideTest.cs b/ExcelTool/bin/Debug/avatarguideTest.cs index 2343e14..924eaf0 100644 --- a/ExcelTool/bin/Debug/avatarguideTest.cs +++ b/ExcelTool/bin/Debug/avatarguideTest.cs @@ -9,7 +9,7 @@ using System.Text; using System.Linq; [Serializable] -public class avatarguideTest : IBinarySerializable +public partial class avatarguideTest : IBinarySerializable { /// /// diff --git a/ExcelTool/bin/Debug/official_room.cs b/ExcelTool/bin/Debug/official_room.cs index e1c9d47..8cc719f 100644 --- a/ExcelTool/bin/Debug/official_room.cs +++ b/ExcelTool/bin/Debug/official_room.cs @@ -9,7 +9,7 @@ using System.Text; using System.Linq; [Serializable] -public class official_room : IBinarySerializable +public partial class official_room : IBinarySerializable { /// /// diff --git a/ExcelTool/obj/Debug/ExcelTool.exe b/ExcelTool/obj/Debug/ExcelTool.exe index c8246a1..bf703cd 100644 Binary files a/ExcelTool/obj/Debug/ExcelTool.exe and b/ExcelTool/obj/Debug/ExcelTool.exe differ diff --git a/ExcelTool/obj/Debug/ExcelTool.pdb b/ExcelTool/obj/Debug/ExcelTool.pdb index 95a2ecd..e851fdd 100644 Binary files a/ExcelTool/obj/Debug/ExcelTool.pdb and b/ExcelTool/obj/Debug/ExcelTool.pdb differ diff --git a/README.md b/README.md index d51a7ee..bc5fa8e 100644 --- a/README.md +++ b/README.md @@ -177,16 +177,16 @@ public partial class avatarguideTestConfig : IBinarySerializable select d; return datas; } - + public override string ToString() - { - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < avatarguideTestInfos.Count; i++) { - sb.Append($"{avatarguideTestInfos[i].ToString()}\n"); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < avatarguideTestInfos.Count; i++) + { + sb.Append($"{avatarguideTestInfos[i].ToString()}\n"); + } + return sb.ToString(); } - return sb.ToString(); - } } ``` @@ -282,11 +282,12 @@ pause #### 待扩展的功能 目前还不是最理想的状态,还有很多可以扩展完善的功能,如下: -* 支持生成各种类型的文件,例如json、xml、proto等 +* 支持生成各种类型的文件,例如json、xml、proto、lua等 * 支持生成各种语法的模板代码 * 支持Excel数据配置规范性检测,例如手误配置不符合规范导致加载异常,例如大小写逗号(肉眼容易忽略),或者空格等等 * 支持Excel字段客户端服务器可选项 * 支持更多自定义数据类型扩展 +* 支持枚举类型 #### 代码 https://github.com/dingxiaowei/ExcelTool 喜欢麻烦点个star吧