public override void DoExport(JsonData jsonData, CSFiled filed, ICell cell) { var isTure = false; switch (cell.CellType) { case CellType.Numeric: isTure = cell.NumericCellValue == 1; break; case CellType.String: if (cell.StringCellValue.Equals("true", System.StringComparison.CurrentCultureIgnoreCase)) { isTure = true; } break; case CellType.Boolean: isTure = cell.BooleanCellValue; break; default: LTDebug.LogError("配置类型错误,期望为0/1/true/false"); break; } jsonData[filed.name] = isTure; }
public override void DoExport(JsonData jsonData, CSFiled filed, ICell cell) { var cellStr = cell.StringCellValue; if (cellStr.StartsWith("[") && cellStr.EndsWith("]")) { if (cellStr.Length == 2) { jsonData[filed.name] = new JsonData(); jsonData[filed.name].SetJsonType(JsonType.Array); } else { jsonData[filed.name] = new JsonData(); var numStr = cellStr.Substring(1, cellStr.Length - 2); var nums = numStr.SplitToInt(","); foreach (var num in nums) { jsonData[filed.name].Add(num); } } } else { LTDebug.LogError("配置类型错误,数组格式必须为[XX,XX,XX,XX],当前为:{0}", cellStr); } }
public override void DoExport(JsonData jsonData, CSFiled filed, ICell cell) { var cellStr = cell.StringCellValue; if (cellStr.StartsWith("[") && cellStr.EndsWith("]")) { if (cellStr.Length == 2) { // 不添加任何东西 } else { jsonData[filed.name] = new JsonData(); var str = cellStr.Substring(2, cellStr.Length - 4); var strArray = str.Split("\",\""); foreach (var singleStr in strArray) { jsonData[filed.name].Add(singleStr); } } } else { LTDebug.LogError("配置类型错误,数组格式必须为[\"XX\",\"XX\",\"XX\",\"XX\"]"); } }
private static void _CheckHandle() { if (_handleActions != null) { return; } _handleActions = new Dictionary <string, BaseExcelFiledExporter>(); var baseExport = typeof(BaseExcelFiledExporter); foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies()) { foreach (Type type in assembly.GetTypes()) { if (type.BaseType == baseExport) { var instance = type.Assembly.CreateInstance(type.FullName) as BaseExcelFiledExporter; foreach (var typeStr in instance.typeStrs) { if (_handleActions.ContainsKey(typeStr)) { LTDebug.LogError("存在重复注册的Excel Filed解析函数:{0}", instance.typeStrs); } else { _handleActions.Add(typeStr, instance); } } } } } }
public static IWorkbook ReadExcel(string excelPath) { var isXlsx = excelPath.EndsWith(".xlsx", System.StringComparison.CurrentCultureIgnoreCase); Debug.Log("处理文件:" + excelPath); FileStream fs = null; try { fs = new FileStream(excelPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); } catch { } if (fs == null) { LTDebug.LogError("无法打开文件{0},跳过处理", excelPath); return(null); } IWorkbook workbook = null; if (isXlsx) { workbook = new XSSFWorkbook(fs); } else { workbook = new HSSFWorkbook(fs); } return(workbook); }
public static string GetMD5FromFile(string filePath) { if (!File.Exists(filePath)) { LTDebug.LogError("尝试计算不存在文件的MD5:{0}", filePath); return(""); } return(GetMD5(File.ReadAllBytes(filePath))); }
public void ReturnObj(string objName, GameObject obj) { LTGameObjPollData objPool = null; _objPools.TryGetValue(objName, out objPool); if (objPool == null) { LTDebug.LogError("不存在指定对象池:" + objName); return; } objPool.Return(obj); }
public override void DoExport(JsonData jsonData, CSFiled filed, ICell cell) { if (cell == null) { jsonData[filed.name] = 0; } else if (cell.CellType == CellType.Numeric) { var fValue = cell.NumericCellValue; jsonData[filed.name] = fValue; } else { LTDebug.LogError("配置类型错误,期望为浮点数,得到类型为:" + cell.CellType); } }
public static bool RenameFile(string oldFilePath, string newFilePath) { if (!File.Exists(oldFilePath)) { LTDebug.LogError("原始文件不存在:{0}", oldFilePath); return(false); } if (File.Exists(newFilePath)) { File.Delete(newFilePath); } if (File.Exists(newFilePath)) { LTDebug.LogError("目标文件无法删除:{0}", newFilePath); return(false); } File.Move(oldFilePath, newFilePath); return(true); }
public override void DoExport(JsonData jsonData, CSFiled filed, ICell cell) { if (cell == null) { jsonData[filed.name] = 0; } else if (cell.CellType == CellType.String) { int.TryParse(cell.StringCellValue, out int parseInt); jsonData[filed.name] = parseInt; LTDebug.LogWarning("int格式,获取到配置表为string:" + cell.StringCellValue + "已自动转为int:" + parseInt); } else if (cell.CellType == CellType.Numeric) { jsonData[filed.name] = (int)cell.NumericCellValue; } else { LTDebug.LogError("int格式期望类型不匹配,当前为:" + cell.CellType); jsonData[filed.name] = 0; } }
private static string _GenJson(CSStruct code, List <IRow> rows, bool isTs) { _CheckHandle(); var filedCount = code.fileds.Count; var totalData = new JsonData(); var isAdded = false; foreach (var row in rows) { if (row == null) { continue; } var jsonData = new JsonData(); var isId = true; var id = 0; var isGen = false; foreach (var filed in code.fileds) { if (isId) { isId = false; // 检查是否是ID if (filed.name != "id") { LTDebug.LogError("excel配置表首行必须为id"); break; } // 检查是否是ID if (filed.mtype != "int") { LTDebug.LogError("id配表类型必须为int"); break; } // 检查内容是否为空 var idCell = row.GetCell(filed.index); if (idCell == null) { break; } if (idCell.CellType != CellType.Numeric) { break; } id = Mathf.CeilToInt((float)row.GetCell(filed.index).NumericCellValue); isGen = true; } if (filed.mtype == "" || filed.mtype == "skip") { continue; } var cell = row.GetCell(filed.index); BaseExcelFiledExporter exporter = null; if (_handleActions.TryGetValue(filed.mtype, out exporter)) { exporter.DoExport(jsonData, filed, cell); } else { LTDebug.LogError("未处理的配表类型:{0}", filed.mtype); } } if (isGen) { if (isTs) { (totalData as IDictionary)[id.ToString()] = jsonData; } else { totalData.Add(jsonData); } isAdded = true; } } if (!isAdded) { return(string.Empty); } if (isTs) { return(totalData.ToJson()); } else { var finalData = new JsonData(); finalData["dataList"] = totalData; return(finalData.ToJson()); } }