private void ExportToStreamAsync(TreeViewSpreadExportDataSnapshot treeViewData, Stream stream) { int percentProgress = 0; int num1 = 0; this.spreadExportRenderer.AddWorksheet(this.SheetName); for (int index = 0; index < treeViewData.ExportRows.Count; ++index) { if (num1 > this.sheetMaxRowsNumber) { this.spreadExportRenderer.AddWorksheet(this.SheetName); num1 = 0; this.columnWidths.Clear(); } this.AddRow(treeViewData.ExportRows[index], num1); int num2 = index * 100 / treeViewData.ExportRows.Count; if (percentProgress != num2) { percentProgress = num2; this.GetWorker().ReportProgress(percentProgress); } ++num1; } if (this.ExportChildNodesGrouped) { 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>(); TreeViewSpreadExportDataSnapshot treeViewData1 = e.Argument as TreeViewSpreadExportDataSnapshot; if (treeViewData1 != null) { string path = Path.GetDirectoryName(treeViewData1.FilePath) + (object)Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(treeViewData1.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(treeViewData1, (Stream)fileStream); this.GetWorker().ReportProgress(100); ControlTraceMonitor.TrackAtomicFeature((RadControl)this.treeView, "Export", (object)path); } else { this.spreadExportRenderer.CreateWorkbook(); List <object> objectList = e.Argument as List <object>; TreeViewSpreadExportDataSnapshot treeViewData2 = objectList[0] as TreeViewSpreadExportDataSnapshot; Stream stream = objectList[1] as Stream; this.ExportToStreamAsync(treeViewData2, stream); this.GetWorker().ReportProgress(100); e.Result = (object)stream; ControlTraceMonitor.TrackAtomicFeature((RadControl)this.treeView, "Export"); } }