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(); } } } } }
private void ExportSheet(ISheet sheet, StreamWriter sw) { int cellCount = sheet.GetRow(3).LastCellNum; CellInfo[] cellInfos = new CellInfo[cellCount]; for (int i = 2; i < cellCount; i++) { string fieldDesc = GetCellString(sheet, 2, i); string fieldName = GetCellString(sheet, 3, i); string fieldType = GetCellString(sheet, 4, i); cellInfos[i] = new CellInfo() { Name = fieldName, Type = fieldType, Desc = fieldDesc }; } for (int i = 5; i <= sheet.LastRowNum; ++i) { if (GetCellString(sheet, i, 2) == "") { continue; } StringBuilder sb = new StringBuilder(); IRow row = sheet.GetRow(i); for (int j = 2; j < cellCount; ++j) { string desc = cellInfos[j].Desc.ToLower(); if (desc.StartsWith("#")) { continue; } // s开头表示这个字段是服务端专用 if (desc.StartsWith("s") && this.isClient) { continue; } // c开头表示这个字段是客户端专用 if (desc.StartsWith("c") && !this.isClient) { continue; } string fieldValue = GetCellString(row, j); if (fieldValue == "") { continue; } if (j > 2) { sb.Append(","); } string fieldName = cellInfos[j].Name; if (fieldName == "Id" || fieldName == "_id") { fieldName = "_id"; sb.Append($"[{fieldValue}, {{"); } string fieldType = cellInfos[j].Type; sb.Append($"\"{fieldName}\":{Convert(fieldType, fieldValue)}"); } sb.Append("}],"); sw.WriteLine(sb.ToString()); } }