Frage

Ich habe einige Probleme bekommt ein Excel-Dokument als Anhang an einer benutzerdefinierten Liste hinzuzufügen. Ich habe einen Eventreceiver hergestellt, die Daten aus anderen Listen und legt die Daten in ein Excel-Dokument speichert.

Was ich habe versucht zu tun, um das Problem zu beheben:

  • getestet CreateContentRow (index, item) in einer separaten Konsolenanwendung (Werke)
  • überprüft, ob noch etwas falsch mit Informationen aus anderen Listen Abrufen (Werke)
  • versucht, in einer Dokumentbibliothek speichern (die Datei ohne Inhalt gespeichert wird)
  • versucht, die xlsx Dokument zu sich zu öffnen, wenn es etwas falsch mit dem xml ist (keine benutzerdefinierte XML hinzugefügt).

Der Code funktioniert ganz gut, aber das Dokument gespeichert wird, aber es ist identisch mit der Vorlage, keine Inhalte hinzugefügt.

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" + string.Format("{0:yyyy-MM-dd_HHmmss}", DateTime.Now) + ".xlsx", memory.ToArray());
                        properties.ListItem.Update();
                    }
                }

Ich bin mit dem gleichen Ansatz auf eine andere Liste, wo ich DOCX-Dokumente erzeugen dort es ganz gut funktioniert. Gibt es einen großen Unterschied, wie ich das Dokument speichern soll je nachdem, ob seine .xlsx oder .docx?

Wenn ich debuggen die Zellen und Reihen werden das sheetdata hinzugefügt, aber es nicht gespeichert bekommt. Alle Ideen, wie dieses Problem beheben?

War es hilfreich?

Lösung

Um den Inhalt zu bekommen gespeichert i speichern Anweisungen hinzufügen erforderlich.

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

Wenn ich hinzugefügt, um die obigen Zeilen vor der attachemnt alles Zugabe funktioniert, wie es sollte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top