Exemplo n.º 1
0
        public bool AddPatternTable(string filePath, string sheetName = "sheet1")
        {
            if (this.patternTables.ContainsKey(sheetName))
            {
                return(false);
            }
            ReoGridControl tmpReoGrid = new ReoGridControl();

            try
            {
                tmpReoGrid.Load(filePath);
            }
            catch (Exception e)
            {
                MessageBox.Show("加载Excel文件失败!详细信息:\n" + e.Message);
                return(false);
            }
            this.patternTables.Add(sheetName, tmpReoGrid.Worksheets[0]);
            return(true);
        }
Exemplo n.º 2
0
        public void loadAll()
        {
            var pos2 = GetPath("{game}\\TetraProject_Data\\StreamingAssets\\Packages\\Builtin\\Database\\CardCommand.csv");

            if (EdLib.HasFile(pos2))
            {
                if (AutoCompleteData == null)
                {
                    AutoCompleteData = new List <ICompletionData>();
                    var obj = new ReoGridControl();
                    obj.Load(pos2, unvell.ReoGrid.IO.FileFormat.CSV);
                    for (int i = 1; i < obj.CurrentWorksheet.RowCount; i++)
                    {
                        if (obj.CurrentWorksheet[i, 0] != null)
                        {
                            if (obj.CurrentWorksheet[i, 1] != null)
                            {
                                AutoCompleteData.Add(new MyCompletionData(obj.CurrentWorksheet[i, 0].ToString(), obj.CurrentWorksheet[i, 1].ToString()));
                            }
                        }
                    }
                    obj.Dispose();
                }
            }


            if (EdLib.HasFile(path_CurrentPackage, true))
            {
                //sheet.SetColumnsWidth(0, 1, 50);
                IsCurrentPackageSteamWorkshop = false;
                var pos = GetPath(path_CurrentPackage) + "\\Database\\";
                if (path_CurrentPackage.Contains("steamapps"))
                {
                    IsCurrentPackageSteamWorkshop = true;
                }
                //return;
                try
                {
                    if (IsCSVLoader)
                    {
                        LoadCSV(pos);
                    }
                    else
                    {
                        if (EdLib.HasFile(pos + "database.xlsx"))
                        {
                            ReoMain.Load(pos + "database.xlsx", unvell.ReoGrid.IO.FileFormat.Excel2007);
                        }
                        else
                        {
                            ReoMain.Load(pos + "database.xls", unvell.ReoGrid.IO.FileFormat.Excel2007);
                        }
                    }
                }
                catch (Exception e)
                {
                    if (e.Message.Contains("ZipFile"))
                    {
                        //直接读取--- csv
                        LoadCSV(pos);
                    }
                    else
                    {
                        EdLib.AskMsg("读取资料库时发生严重异常,错误信息:\n" + e.ToString() + "\n" + e.Message);

                        return;
                    }
                }

                ReoMain.Readonly = IsCurrentPackageSteamWorkshop;

                foreach (var item in reoGridControl2.Worksheets)
                {
                    item.NameTextColor          = EdLib.CFore;
                    item.NameBackColor          = EdLib.CBack;
                    item.SelectionRangeChanged += Item_SelectionRangeChanged;
                    if (item.Name == "Card")
                    {
                        ReoMain.CurrentWorksheet = item;
                    }
                }

                LoadSheet();
                return;
            }
        }
        public async Task LoadGrid()
        {
            await _gridLoadControl.DoLoad(async() => {
                var data = await Task.Run(() =>
                                          XlsUtil.ReadWorksheet(_filePath, _sheetMeta.Index, lastRowIndex: MAX_SHEET_ROWS - 1));

                // user might have closed the window while we were loading
                if (_grid.IsDisposed)
                {
                    return;
                }

                // reogrid doesn't seem to properly support newlines in quoted CSV strings but we're just using it for
                // preview purposes, so we'll just remove newlines.  it's fine here.  it's important that reogrid's
                // row numbers match what we think the row numbers are
                foreach (var row in data)
                {
                    for (var j = 0; j < row.Length; j++)
                    {
                        if (row[j] is string s && s.Contains('\n'))
                        {
                            row[j] = s.Replace("\r", "").Replace("\n", " ");
                        }
                    }
                }

                var columnCount = Math.Max(1, data.Max(x => x.Length));

                // the fastest way to get the data into the grid control seems to be via CSV
                using (var memoryStream = new MemoryStream()) {
                    await Task.Run(() => {
                        var streamWriter = new StreamWriter(
                            memoryStream, Encoding.Default, STREAM_BUFFER_SIZE, leaveOpen: true);
                        using (streamWriter) {
                            CsvUtil.WriteCsv(data, streamWriter);
                        }
                        memoryStream.Position = 0;
                    });

                    // user might have closed the window while we were loading
                    if (_grid.IsDisposed)
                    {
                        return;
                    }

                    _grid.Load(memoryStream, FileFormat.CSV);
                }

                var w = _grid.CurrentWorksheet;
                w.SetRows(data.Count);
                w.SetCols(columnCount);

                for (var i = 0; i < columnCount; i++)
                {
                    w.AutoFitColumnWidth(i);
                    var width = Math.Min(MAX_SHEET_COLUMN_WIDTH, w.GetColumnWidth(i) + 5);
                    w.SetColumnsWidth(i, 1, (ushort)width);
                }

                w.SetSettings(WorksheetSettings.Edit_Readonly, true);

                _setCellRangeLnk.Enabled = true;
            });
        }