Beispiel #1
0
 protected override void Init()
 {
     ContextRect = InfoTool.GetViewRect();
     base.Init();
 }
Beispiel #2
0
        private IEnumerator Read(string path, Action <string, Color> setTipVal, Action finish)
        {
            if (mWorkbook == null)
            {
                mWorkbook = ExcelMgr.ReadExcel(mPath);
            }
            yield return(new WaitForEndOfFrame());

            if (mWorkbook == null)
            {
                setTipVal(string.Format("Excel路径<{0}>没有找到指定配置表!", mPath), Color.red);
            }
            else
            {
                mProgressBar.value = 0.01f;
                setTipVal("读取完成", Color.green);
                yield return(new WaitForEndOfFrame());

                List <object> outputList = new List <object>();
                string        cfgName    = null;
                string[]      keys       = null;
                int           count      = mWorkbook.NumberOfSheets;
                var           pgs        = 0.9f / count;
                for (var page = 0; page < count; page++)
                {
                    ISheet sheet = mWorkbook.GetSheetAt(page);
                    if (sheet != null)
                    {
                        if (keys == null)
                        {
                            IRow row = ExcelMgr.GetSheetRow(sheet, 1);
                            keys = new string[row.LastCellNum];
                            if (row != null && row.LastCellNum > 1)
                            {
                                for (int c = 0; c < row.LastCellNum; c++)
                                {
                                    var str = row.GetCell(c).ToString();
                                    if (string.IsNullOrEmpty(str))
                                    {
                                        yield return(new WaitForEndOfFrame());

                                        goto ROW_CELL_IS_NULL;
                                    }
                                    keys[c] = str;
                                }
                            }
                            else
                            {
                                yield return(new WaitForEndOfFrame());

                                goto DECODE_EXCEL_FAIL;
                            }
                        }
                        var rowLen = sheet.LastRowNum + 1;
                        mProgressBar.value = (pgs * page) - (rowLen * pgs) * 2;
                        if (rowLen <= 2)
                        {
                            continue;
                        }
                        for (var r = 2; r < rowLen; r++)
                        {
                            IRow row = ExcelMgr.GetSheetRow(sheet, r);
                            if (row != null && row.LastCellNum > 1)
                            {
                                object cfg = null;
                                for (int c = 0; c < row.LastCellNum; c++)
                                {
                                    var key = keys[c];
                                    if (c == 0)
                                    {
                                        if (!string.IsNullOrEmpty(key))
                                        {
                                            cfg = InfoTool.InstantiationScript(key);
                                            if (cfg == null)
                                            {
                                                goto GET_ASSEMBLY_FAIL;
                                            }
                                            cfgName = key;
                                            yield return(new WaitForEndOfFrame());
                                        }
                                        else
                                        {
                                            yield return(new WaitForEndOfFrame());

                                            goto GET_ASSEMBLY_FAIL;
                                        }
                                    }
                                    else
                                    {
                                        var cell = row.GetCell(c);
                                        if (cell == null)
                                        {
                                            continue;
                                        }
                                        WriteCfg(keys[c], row.GetCell(c).ToString(), ref cfg);
                                    }
                                }
                                if (cfg == null)
                                {
                                    continue;
                                }
                                outputList.Add(cfg);
                            }
                            mProgressBar.value = (pgs * page) - (rowLen * pgs) * r;
                            yield return(new WaitForEndOfFrame());
                        }
                    }
                }
                mProgressBar.value = 0.9f;
                setTipVal("解码完成", Color.green);
                yield return(new WaitForEndOfFrame());

                string outputPath = string.Format("{0}{1}", PathTool.DataPath, PathTool.Temp);
                Config.OutputConfig <object>(outputPath, cfgName, outputList, SuffixTool.TableInfo.ToLower());
                mProgressBar.value = 1.0f;
            }
            goto FINISH;
            ROW_CELL_IS_NULL  : MessageBox.Error("配置表字段key为null"); goto RETURN;
            GET_ASSEMBLY_FAIL : MessageBox.Error("程序集没有识别到Assembly对应的脚本。"); goto RETURN;
            DECODE_EXCEL_FAIL : MessageBox.Error("解析excel失败"); goto RETURN;
            RETURN            : Clear();
FINISH:
            setTipVal("导出完成", Color.green);
            Clear();
            finish();
        }