private void ExportToStreamAsync( PropertyGridSpreadExportDataSnapshot propertyGridData, Stream stream) { int percentProgress = 0; int num1 = 0; this.spreadExportRenderer.AddWorksheet(this.SheetName); for (int index = 0; index < propertyGridData.ExportRows.Count; ++index) { if (num1 > this.sheetMaxRowsNumber) { this.spreadExportRenderer.AddWorksheet(this.SheetName); num1 = 0; this.columnWidths.Clear(); } this.AddRow(propertyGridData.ExportRows[index], num1); int num2 = index * 100 / propertyGridData.ExportRows.Count; if (percentProgress != num2) { percentProgress = num2; this.GetWorker().ReportProgress(percentProgress); } ++num1; } if (this.ExportChildItemsGrouped) { this.GroupWorksheetRows(num1); } this.spreadExportRenderer.CallWorkbookCreated(); this.spreadExportRenderer.Export(stream); }
private void worker_DoWork(object sender, DoWorkEventArgs e) { this.spreadExportRenderer.RegisterFormatProvider(this.ExportFormat); this.spreadExportRenderer.GetFormatProvider(this.ExportFormat); this.columnWidths = new List <int>(); PropertyGridSpreadExportDataSnapshot propertyGridData1 = e.Argument as PropertyGridSpreadExportDataSnapshot; if (propertyGridData1 != null) { string path = Path.GetDirectoryName(propertyGridData1.FilePath) + (object)Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(propertyGridData1.FilePath) + this.spreadExportRenderer.GetFileExtension(this.ExportFormat); FileStream fileStream; if (this.FileExportMode == FileExportMode.NewSheetInExistingFile && File.Exists(path) && this.ExportFormat == SpreadExportFormat.Xlsx) { fileStream = new FileStream(path, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite, 32768, false); this.spreadExportRenderer.ImportWorkbook((Stream)fileStream); } else { fileStream = new FileStream(path, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite, 32768, false); this.spreadExportRenderer.CreateWorkbook(); } using (fileStream) this.ExportToStreamAsync(propertyGridData1, (Stream)fileStream); this.GetWorker().ReportProgress(100); ControlTraceMonitor.TrackAtomicFeature((RadControl)this.propertyGrid, "Export", (object)path); } else { this.spreadExportRenderer.CreateWorkbook(); List <object> objectList = e.Argument as List <object>; PropertyGridSpreadExportDataSnapshot propertyGridData2 = objectList[0] as PropertyGridSpreadExportDataSnapshot; Stream stream = objectList[1] as Stream; this.ExportToStreamAsync(propertyGridData2, stream); this.GetWorker().ReportProgress(100); e.Result = (object)stream; ControlTraceMonitor.TrackAtomicFeature((RadControl)this.propertyGrid, "Export"); } }