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); }
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; }); }