/// <summary> /// 检测Excel key 是否合法 /// </summary> private void CheckExcelLocalizationKey() { if (mLocalizationExcelData == null) { mIsFormatEnable = false; return; } DataTable dataTable = mLocalizationExcelData.Tables[0]; if (dataTable.Rows.Count < 2) { mIsFormatEnable = false; Debug.LogError("当前读取的表中不包含任何数据" + dataTable.TableName); return; } mIsFormatEnable = true; #region 获取一共有多少列数据 int Column = 1; for (int dex = StartRow; dex < dataTable.Rows[0].ItemArray.Length; dex++) { var column = dataTable.Rows[0].ItemArray[dex]; if (string.IsNullOrEmpty(column.ToString())) { break; } ++Column; } Debug.Log(string.Format("一共有{0} 列有效的列", Column)); #endregion StringBuilder stringBuilder = new StringBuilder(); Dictionary <string, int> allKeyRecords = new Dictionary <string, int>(); for (int row = 2; row < dataTable.Rows.Count; ++row) { string key = dataTable.Rows[row][0].ToString(); //每一行的第一列为本地化的key if (string.IsNullOrEmpty(key)) { mIsFormatEnable = false; stringBuilder.Append(string.Format("Row={0} Key 为null", row)); stringBuilder.Append(System.Environment.NewLine); continue; } if (allKeyRecords.ContainsKey(key)) { mIsFormatEnable = false; stringBuilder.Append(string.Format("Row={0} Key={1} 重复的key", row + (StartRow - 1), key)); stringBuilder.Append(System.Environment.NewLine); continue; } else { allKeyRecords[key] = row; } if (Regex.IsMatch(key, s_LocalizationKeyReg, RegexOptions.Singleline) == false) { mIsFormatEnable = false; stringBuilder.Append(string.Format("Row={0} Key={1} 格式错误", row, key)); stringBuilder.Append(System.Environment.NewLine); continue; } } if (mIsFormatEnable == false) { string content = stringBuilder.ToString(); string errorFormatPath = Application.dataPath.CombinePathEx(ConstDefine.S_EditorName).CombinePathEx("localizationErrorFormat.txt"); IOUtility.CreateOrSetFileContent(errorFormatPath, content, false); Debug.LogInfor("Excel 中部分Key 格式错误,已经输出保存到文件" + errorFormatPath); return; } Debug.LogEditorInfor("本地化语言表Excel 格式正确,可以导出"); }