Esempio n. 1
0
        /// <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 格式正确,可以导出");
        }