Преобразование MemoryStream в xmlDocument C# - PullRequest
0 голосов
/ 07 мая 2020

У меня есть таблица данных, и мне нужно преобразовать ее в таблицу Excel. Я преобразовал в MemoryStream, и мне нужен формат, в котором я могу принудительно загрузить (я думаю, что формат xml правильный), но в процессе происходит ошибка в функции XmlDocument.Load ().

MemoryStream stream = new MemoryStream();

using (SpreadsheetDocument foo = SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook))
  {
     WorkbookPart workbookPart = foo.AddWorkbookPart();
     workbookPart.Workbook = new Workbook();
     workbookPart.Workbook.AddNamespaceDeclaration("r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships");

     Sheets sheets = workbookPart.Workbook.AppendChild<Sheets>(new Sheets());

     string idPlanilha = "Report";

     WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>(idPlanilha);
     worksheetPart.Worksheet = new Worksheet(new SheetData());
     Sheet planilha1 = new Sheet()
     {
        Id = idPlanilha,
        SheetId = 1,
        Name = "first"
     };
     sheets.Append(planilha1);

     SheetData dadosPlanilha = worksheetPart.Worksheet.GetFirstChild<SheetData>();

     UInt32Value indice = 1;
     foreach (DataRow rowDados in dt.Rows)
     {
        ...
     }

     worksheetPart.Worksheet.Save();
     workbookPart.Workbook.Save();
     foo.Close();

     stream.Position = 0;

     XmlDocument document = new XmlDocument();

     StreamReader reader = new StreamReader(stream);

     document.Load(reader); // The error that did out:" Invalid root level data. Line 1, position 1."

     byte[] file = Encoding.Default.GetBytes(document.OuterXml);

     return File(file, document.Name);
  }
...