//Создание отчета public MemoryStream GenerateReport(DataSet dataSet, string Temleyt, string OutFile) { MemoryStream ms = new MemoryStream(); ms = SpreadsheetReader.Copy(Temleyt); SpreadsheetDocument RecultDoc = SpreadsheetDocument.Open(ms, true); MemoryStream tp = new MemoryStream(); tp = SpreadsheetReader.Copy(Temleyt); SpreadsheetDocument TemleytDoc = SpreadsheetDocument.Open(tp, true); foreach (Sheet curSheet in TemleytDoc.WorkbookPart.Workbook.Sheets) { UInt32 Offset = 0; // Получаем имена областей DefinedNames принадлежащих к текущему Sheet List <DefinedName> dn = RecultDoc.WorkbookPart.Workbook.Elements <DefinedNames>().First().Elements <DefinedName>() .Where(d => d.Text.IndexOf("#REF!") < 0 && curSheet.Name.Value == d.Text.Substring(0, d.Text.IndexOf("!")).TrimEnd('\'').TrimStart('\'')).ToList(); foreach (DefinedName definedName in dn) { DataTable dataTable = GetTableByName(dataSet, definedName.Name); if (dataTable != null) { Offset = SetValueFromDataTable(dataTable, RecultDoc, TemleytDoc, Offset); } } } SetValueWithoutRange(dataSet, RecultDoc); ClearSpreadsheetDocument(RecultDoc); TemleytDoc.Close(); RecultDoc.Close(); if (OutFile != null) { if (OutFile.Length > 0) { SpreadsheetWriter.StreamToFile(OutFile, ms); } } return(ms); }