public static string WriteToLua(WDBSheet sheet, TargetPlatformType platformType) { if (sheet.FieldCount == 0 || sheet.RowCount == 0) { return(string.Empty); } WDBFieldPlatform platform = platformType == TargetPlatformType.Client ? WDBFieldPlatform.Client : WDBFieldPlatform.Server; StringBuilder builder = new StringBuilder(); int indent = 0; builder.AppendLine($"local {sheet.Name} = {{"); for (int r = 0; r < sheet.RowCount; r++) { WDBRow row = sheet.GetRowAtIndex(r); WDBField keyField = sheet.GetFieldAtIndex(0); WDBCell keyCell = row.GetCellByIndex(0); indent++; string keyStr = keyCell.GetContent(keyField); builder.AppendLine($"{GetIndent(indent)}[{keyStr}] = {{"); for (int f = 0; f < sheet.FieldCount; f++) { WDBField field = sheet.GetFieldAtIndex(f); if (string.IsNullOrEmpty(field.Name)) { continue; } if (field.FieldPlatform != WDBFieldPlatform.All && field.FieldPlatform != platform) { continue; } indent++; WDBCell cell = row.GetCellByIndex(f); AppendValueLine(builder, indent, field, cell); indent--; } builder.AppendLine($"{GetIndent(indent)}}},"); indent--; } builder.AppendLine("}"); builder.AppendLine($"return {sheet.Name}"); return(builder.ToString()); }
public static string WriteToJson(WDBSheet sheet, TargetPlatformType platformType) { if (sheet.FieldCount == 0 || sheet.RowCount == 0) { return(string.Empty); } WDBFieldPlatform platform = platformType == TargetPlatformType.Client ? WDBFieldPlatform.Client : WDBFieldPlatform.Server; JObject sheetObject = new JObject(); for (int r = 0; r < sheet.RowCount; r++) { WDBRow row = sheet.GetRowAtIndex(r); JObject rowObject = new JObject(); for (int f = 0; f < sheet.FieldCount; f++) { WDBField field = sheet.GetFieldAtIndex(f); if (string.IsNullOrEmpty(field.Name)) { continue; } if (field.FieldPlatform != WDBFieldPlatform.All && field.FieldPlatform != platform) { continue; } object value = GetValue(field, row.GetCellByIndex(f)); rowObject.Add(field.Name, JToken.FromObject(value)); if (f == 0) { sheetObject.Add(value.ToString(), rowObject); } } } return(sheetObject.ToString(Formatting.Indented)); }
private static void ReadFieldFromSheet(WDBSheet sheetData, ISheet sheet) { logHandler?.Invoke(LogType.Info, LogMessage.INFO_START_READ_FIELD); MethodInfo createFieldMI = typeof(WDBUtility).GetMethod("CreateField", BindingFlags.Public | BindingFlags.Static); int firstRowNum = readerExcelStyle.RowStartIndex; int lastRowNum = firstRowNum + readerExcelStyle.FieldRowCount; int firstColNum = sheet.GetRow(firstRowNum).FirstCellNum; int lastColNum = sheet.GetRow(firstRowNum).LastCellNum; for (int c = firstColNum + 1; c < lastColNum; ++c) { object[] datas = new object[readerExcelStyle.FieldRowCount + 1]; datas[0] = c; for (int r = firstRowNum; r < lastRowNum; ++r) { IRow row = sheet.GetRow(r); string cellValue = null; if (row != null) { cellValue = GetCellStringValue(row.GetCell(c)); } datas[r - firstRowNum + 1] = cellValue; } WDBField field = (WDBField)createFieldMI.Invoke(null, datas); WDBFieldPlatform fieldPlatform = field.FieldPlatform; if (fieldPlatform != WDBFieldPlatform.All && readerExcelStyle.TargetPlatform != WDBFieldPlatform.All && fieldPlatform != readerExcelStyle.TargetPlatform) { continue; } logHandler?.Invoke(LogType.Info, string.Format(LogMessage.INFO_CREATE_FIELD, field)); sheetData.AddField(field); } logHandler?.Invoke(LogType.Info, LogMessage.INFO_END_READ_FIELD); }