生成的模板类改成partial类
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -231,208 +231,5 @@ namespace ExcelTool
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 生成对应的C#Model类
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="fileName"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
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<float> {0}", header.Item1));
|
|
||||||
}
|
|
||||||
else if (type.Equals("list"))
|
|
||||||
{
|
|
||||||
sb.Append(string.Format("\tpublic List<List<float>> {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<float>();\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<List<float>>();\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<float>();\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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,27 +30,11 @@ namespace ExcelTool
|
|||||||
}
|
}
|
||||||
var headers = ExcelHelper.ExcelHeaders(fileName);
|
var headers = ExcelHelper.ExcelHeaders(fileName);
|
||||||
var excelName = fileInfo.Name.Remove(fileInfo.Name.IndexOf(".xlsx"));
|
var excelName = fileInfo.Name.Remove(fileInfo.Name.IndexOf(".xlsx"));
|
||||||
//var dt = ExcelHeader(fileName);
|
|
||||||
//var headers = dt.Headers();
|
|
||||||
//List<string> notesStr = new List<string>();
|
|
||||||
//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();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.Append($"/*\n * auto generated by tools(注意:千万不要手动修改本文件)\n * {excelName}\n */\n");
|
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("using System;\nusing System.IO;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Linq;\n\n");
|
||||||
sb.Append("[Serializable]\n");
|
sb.Append("[Serializable]\n");
|
||||||
sb.Append($"public class {excelName} : IBinarySerializable\n");
|
sb.Append($"public partial class {excelName} : IBinarySerializable\n");
|
||||||
sb.Append("{\n");
|
sb.Append("{\n");
|
||||||
for (int i = 0; i < headers.Count; i++)
|
for (int i = 0; i < headers.Count; i++)
|
||||||
{
|
{
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -9,7 +9,7 @@ using System.Text;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class avatarguideTest : IBinarySerializable
|
public partial class avatarguideTest : IBinarySerializable
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 序号
|
/// 序号
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ using System.Text;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class official_room : IBinarySerializable
|
public partial class official_room : IBinarySerializable
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 序号
|
/// 序号
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -177,16 +177,16 @@ public partial class avatarguideTestConfig : IBinarySerializable
|
|||||||
select d;
|
select d;
|
||||||
return datas;
|
return datas;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string ToString()
|
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数据配置规范性检测,例如手误配置不符合规范导致加载异常,例如大小写逗号(肉眼容易忽略),或者空格等等
|
||||||
* 支持Excel字段客户端服务器可选项
|
* 支持Excel字段客户端服务器可选项
|
||||||
* 支持更多自定义数据类型扩展
|
* 支持更多自定义数据类型扩展
|
||||||
|
* 支持枚举类型
|
||||||
|
|
||||||
#### 代码
|
#### 代码
|
||||||
https://github.com/dingxiaowei/ExcelTool 喜欢麻烦点个star吧
|
https://github.com/dingxiaowei/ExcelTool 喜欢麻烦点个star吧
|
||||||
|
|||||||
Reference in New Issue
Block a user