示例#1
0
        public static Dictionary<string, List<string>> ReadExcelWorkSheet(string excelPath)
        {
            Dictionary<string, List<string>> excelDict = null;
            try
            {
                Funcell.DIY.ExcelWorkSheet sheet = new Funcell.DIY.ExcelWorkSheet(excelPath);
                if (sheet == null)
                {
                    UnityEngine.Debug.LogError("读取Excel出错,无数据!" + excelPath);
                    return new Dictionary<string, List<string>>();
                }
                var values = sheet.Cells;
                
                // 行个数
                int rowNum = values.GetLength(0);
                if (rowNum > 0)
                {
                    // 列个数
                    columnNum = values.GetLength(1);
                    //列数不能为空
                    columnNum = columnNum > 0 ? columnNum : 1;
                    excelDict = new Dictionary<string, List<string>>(rowNum);
                    for (int i = 0; i < rowNum; i++)
                    {
                        List<string> columnList = new List<string>(columnNum);
                        var key = values[i, 0];
                        for (int j = 0; j < columnNum; j++)
                        {

                            string value = values[i, j];
                            columnList.Add(value);
                        }

                        if (!excelDict.ContainsKey(key))
                            excelDict.Add(key, columnList);
                    }
                }
                else 
                {
                    columnNum = 1;
                    excelDict = new Dictionary<string, List<string>>();
                }
            }
            catch (Exception ex)
            {
                UnityEngine.Debug.LogError("读取LanguageConverter出错!" + ex.Message);
            }
            
            return excelDict;
        }
示例#2
0
        private static void PeekStringToLanguageConverter(FileInfo fInfo)
        {
            try
            {
                Funcell.DIY.ExcelWorkSheet sheet = new Funcell.DIY.ExcelWorkSheet(fInfo.FullName);
                int rowLen = sheet.Cells.GetLength(0);

                //每列的类型
                Dictionary <int, ColumnDataType> dictType = new Dictionary <int, ColumnDataType>();
                //需要忽略的列
                Dictionary <int, bool> dictIgnore = new Dictionary <int, bool>();

                //每列数据类型
                if (sheetDataTypeRow < rowLen)
                {
                    int columnLen = sheet.Cells.GetColumnNum(sheetDataTypeRow);
                    for (int i = 0; i < columnLen; ++i)
                    {
                        var value = sheet.Cells[sheetDataTypeRow, i];
                        if (string.IsNullOrEmpty(value))
                        {
                            continue;
                        }
                        ColumnDataType type = ColumnDataType.INT_DATA;
                        // 分解一列的数据类型
                        if (value.Contains("varchar") || value.Contains("text"))
                        {
                            type = ColumnDataType.STRING;
                        }
                        else if (value.Contains("big"))
                        {
                            type = ColumnDataType.INT64_DATA;
                        }
                        else if (value.Contains("define"))
                        {
                            type = ColumnDataType.DEFINE;
                        }

                        dictType.Add(i, type);
                    }
                }

                //可以忽略的列
                if (sheetRow < rowLen)
                {
                    int columnLen = sheet.Cells.GetColumnNum(sheetRow);
                    for (int i = 0; i < columnLen; ++i)
                    {
                        var value = sheet.Cells[sheetRow, i];
                        dictIgnore.Add(i, value.IndexOf("ignore", StringComparison.CurrentCultureIgnoreCase) >= 0);
                    }
                }

                //提取字符串
                bool isIgnore = false;
                for (int i = sheetRow + 1; i < rowLen; ++i)
                {
                    int columnLen = sheet.Cells.GetColumnNum(i);
                    for (int j = 0; j < columnLen; ++j)
                    {
                        if (dictIgnore.TryGetValue(j, out isIgnore))
                        {
                            if (isIgnore)
                            {
                                continue;
                            }
                        }

                        ColumnDataType dataType = ColumnDataType.INT_DATA;
                        if (dictType.TryGetValue(j, out dataType))
                        {
                            if (dataType == ColumnDataType.STRING)
                            {
                                var tempValue = CSharpWriter.ProcessString(sheet.Cells[i, j]);
                                if (tempValue.IndexOf(",") < 0 && tempValue.Length > 2)
                                {
                                    tempValue = tempValue.Substring(1, tempValue.Length - 2);
                                }
                                LanguageConverter.Instance.AddText(tempValue);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                UnityEngine.Debug.LogError(string.Format("加载{0}表异常: {1}", fInfo.Name, ex.ToString()));
            }
        }