Création d'un document excel comme pièce jointe dans une list de points de partage

J'ai quelques problèmes à append un document excel comme pièce jointe sur une list personnalisée. J'ai créé un récepteur d'events qui collecte des données provenant d'autres lists et met datatables dans un document excel.

Ce que j'ai essayé de faire pour corriger le problème:

  • testé CreateContentRow (index, item) dans une application de console séparée (travaux)
  • vérifié si quelque chose ne va pas avec l'extraction d'informations provenant d'autres lists (travaux)
  • a essayé d'save dans une bibliothèque de documents (le file est enregistré sans contenu)
  • essayé d'ouvrir le document xlsx s'il se trouvait quelque chose de mal avec le xml (pas de xml ajouté).

Le code fonctionne très bien, mais le document est sauvegardé mais il est identique au model, aucun contenu n'a été ajouté.

using (var memory = new MemoryStream()) { var binary = template.OpenBinary(); memory.Write(binary, 0, binary.Length); using (var document = SpreadsheetDocument.Open(memory, true)) { var workbookPart = document.WorkbookPart; var worksheetparts = workbookPart.WorksheetParts; var worksheetpart = worksheetparts.FirstOrDefault(); var sheetData = worksheetpart.Worksheet.GetFirstChild<SheetData>(); var index = 2; foreach (var item in items) { var row = CreateContentRow(index, item); index++; sheetData.AppendChild(row); } properties.ListItem.Attachments.Add("name" + ssortingng.Format("{0:yyyy-MM-dd_HHmmss}", DateTime.Now) + ".xlsx", memory.ToArray()); properties.ListItem.Update(); } } 

J'utilise la même approche sur une autre list où je génère des documents .docx là-bas. Cela fonctionne très bien. Y a-t-il une grande différence dans la façon dont je devrais save le document en fonction de son .xlsx ou .docx?

Lorsque je débogue, les cellules et les lignes sont ajoutées aux feuilles de données, mais elles ne sont pas enregistrées. Des idées pour résoudre le problème ?

Afin d'get le contenu enregistré, j'ai besoin d'append des instructions de sauvegarde.

 wspart.Worksheet.Save(); document.WorkbookPart.Workbook.Save(); 

Lorsque j'ai ajouté les lignes ci-dessus avant d'append l'attachemnt, tout a fonctionné comme il se doit.