private void ExportIDL(string fileName, string exportDir) { XSSFWorkbook xssfWorkbook; using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { xssfWorkbook = new XSSFWorkbook(file); } string protoName = Path.GetFileNameWithoutExtension(fileName).ToLower(); string exportPath = Path.Combine(exportDir, $"{protoName}.fbs"); using (FileStream txt = new FileStream(exportPath, FileMode.Create)) using (StreamWriter sw = new StreamWriter(txt)) { StringBuilder sb = new StringBuilder(); ISheet sheet = xssfWorkbook.GetSheetAt(0); sb.Append("namespace fb; \n"); //gen TB sb.Append($"table {protoName}TB\n"); sb.Append("{\n"); sb.Append($"\t {protoName}TRS:[{protoName}TR];\n"); sb.Append("}\n\n"); //end TB //gen TR sb.Append($"table {protoName}TR\n"); sb.Append("{\n"); int cellCount = sheet.GetRow(0).LastCellNum; for (int i = 0; i < cellCount; i++) { string fieldDesc = ExcelHelper.GetCellString(sheet, 0, i); if (fieldDesc.StartsWith("#")) { continue; } string fieldName = ExcelHelper.GetCellString(sheet, 1, i).ToLower(); string fieldType = ExcelHelper.GetCellString(sheet, 2, i); if (fieldType == "" || fieldName == "") { continue; } string idlType = Convert(fieldType); //key if (fieldName.Equals("_id")) { idlType += "(key)"; } sb.Append($"\t {underscope_field(fieldName)}:{idlType};\n"); } sb.Append("}\n"); //end TR sb.Append($"root_type {protoName}TB;"); sw.Write(sb.ToString()); } }
private void GenerateTSData() { foreach (string filePath in Directory.GetFiles(ExcelPath)) { if (Path.GetExtension(filePath) != ".xlsx") { continue; } if (Path.GetFileName(filePath).StartsWith("~")) { continue; } if (ignoreFiles.Contains(Path.GetFileName(filePath))) { continue; } string filename = Path.GetFileNameWithoutExtension(filePath); string filenameUpperFirst = filename.Substring(0, 1).ToUpper() + filename.Substring(1); XSSFWorkbook xssfWorkbook; using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { xssfWorkbook = new XSSFWorkbook(file); string tsdataPath = Path.Combine(TsPath, $"{filename}.ts"); StringBuilder sbTR = new StringBuilder(); StringBuilder sbTRProp = new StringBuilder(); StringBuilder sbTRParams = new StringBuilder(); StringBuilder sbTRInit = new StringBuilder(); StringBuilder sbTB = new StringBuilder(); //生成TR sbTR.Append("import { Singleton } from \"../../framework/common/Singleton\";\n"); sbTR.Append($"export class {filenameUpperFirst}TR{{"); //生成TB sbTB.Append($"export class {filenameUpperFirst}TB extends Singleton<{filenameUpperFirst}TB>{{ \n"); sbTB.Append($"\tpublic trs:Map<number, {filenameUpperFirst}TR> = new Map<number, {filenameUpperFirst}TR>();\n"); sbTB.Append("\tconstructor(){\n"); sbTB.Append("\t\tsuper();\n"); // for (int k = 0; k < xssfWorkbook.NumberOfSheets; ++k) { int k = 0; //只支持一个sheet ISheet sheet = xssfWorkbook.GetSheetAt(k); int cellCount = sheet.GetRow(0).LastCellNum; CellInfo[] cellInfos = new CellInfo[cellCount]; for (int i = 0; i < cellCount; i++) { string fieldDesc = ExcelHelper.GetCellString(sheet, 0, i); string fieldName = ExcelHelper.GetCellString(sheet, 1, i); string fieldType = ExcelHelper.GetCellString(sheet, 2, i); cellInfos[i] = new CellInfo() { Name = fieldName, Type = fieldType, Desc = fieldDesc }; sbTRProp.Append($"\t public {fieldName}:{GetTSType(fieldType)} ;\n"); if (i == 0) { sbTRParams.Append($"{fieldName}:{GetTSType(fieldType)}"); } else { sbTRParams.Append($", {fieldName}:{GetTSType(fieldType)}"); } sbTRInit.Append($"\t\tthis.{fieldName} = {fieldName};\n"); } for (int i = 3; i <= sheet.LastRowNum; ++i) { if (ExcelHelper.GetCellString(sheet, i, 0) == "") { break;; } IRow row = sheet.GetRow(i); string id = ExcelHelper.GetCellString(row, 0); sbTB.Append($"\t\tthis.trs.set({id}, new {filenameUpperFirst}TR("); for (int j = 0; j < cellCount; ++j) { string fieldValue = ExcelHelper.GetCellString(row, j); string fieldType = cellInfos[j].Type; if (fieldValue == null || fieldValue.Trim() == "") { fieldValue = GetTSDefaultValue(fieldType); } fieldValue = Convert(fieldType, fieldValue); if (j == 0) { sbTB.Append($"{fieldValue}"); } else { sbTB.Append($", {fieldValue}"); } } sbTB.Append($"));\n"); } using (FileStream txt = new FileStream(tsdataPath, FileMode.Create)) using (StreamWriter sw = new StreamWriter(txt)) { //生成TR类 sw.WriteLine(sbTR.ToString()); sw.WriteLine(sbTRProp.ToString()); sw.Write("\tconstructor("); sw.Write(sbTRParams.ToString()); sw.WriteLine("){"); sw.WriteLine(sbTRInit.ToString()); sw.WriteLine("\t}"); sw.WriteLine("}\n"); //生成TB类 sbTB.Append("\t }\n"); sbTB.Append("}\n"); sw.WriteLine(sbTB.ToString()); sw.Flush(); } } } } }