Domanda

Ho alcuni problemi di aggiunta di un documento Excel come allegato a un elenco personalizzato. Ho fatto un eventreceiver che raccoglie i dati provenienti da altri elenchi e mette i dati in un documento di Excel.

Quello che ho cercato di fare per risolvere il problema:

  • testato CreateContentRow (indice, item) in un'applicazione console separata (opere)
  • controllato se c'è qualcosa di sbagliato con il recupero dati da altre liste (opere)
  • provato da salvare in una libreria di documenti (il file viene salvato senza contenuto)
  • provato ad aprire il documento xlsx per sé, se c'è qualcosa di sbagliato con l'XML (senza XML personalizzato aggiunto).

Il codice funziona bene, ma il documento viene salvato, ma è identica al modello, nessun contenuto aggiunto.

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();
                    }
                }

sto usando lo stesso approccio su un'altra lista in cui ho generare i documenti .docx lì funziona bene. C'è una grande differenza nel modo in cui avrei dovuto salvare il documento a seconda se .xlsx o .docx?

Quando il debug delle celle e le righe vengono aggiunte al sheetdata, ma non viene salvato. Tutte le idee su come risolvere questo problema?

È stato utile?

Soluzione

Al fine di ottenere il contenuto salvato avevo bisogno di aggiungere salvare le istruzioni.

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

Quando ho aggiunto le linee di sopra prima di aggiungere il tutto attachemnt ha funzionato come dovrebbe.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top