Pregunta

Tengo algunos problemas para añadir un documento de Excel como archivo adjunto en una lista personalizada. He hecho un EventReceiver que recoge los datos de otras listas y coloca los datos en un documento de Excel.

Lo que he tratado de hacer para corregir el problema:

  • probado CreateContentRow (índice, elemento) en una aplicación de consola separada (obras)
  • comprobar si que hay algo malo en ir a buscar la información de otras listas (las obras)
  • intentado salvar a una biblioteca de documentos (el archivo se guarda sin contenido)
  • intentado abrir el documento xlsx a sí mismo si hay algo mal con el código XML (XML personalizado sin agregado).

El código funciona bien, pero el documento se guarda pero es idéntica a la plantilla, ningún contenido añadido.

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

Estoy utilizando el mismo enfoque en otra lista donde i generar documentos .docx no funciona muy bien. ¿Hay una gran diferencia en la forma en que debería guardar el documento en función de si su .xlsx o .docx?

Cuando puedo depurar las células y las filas se añaden a la sheetData, pero no quedan guardados. ¿Alguna idea sobre cómo solucionar este problema?

¿Fue útil?

Solución

Con el fin de obtener el contenido guardado que necesitaba para agregar Guardar declaraciones.

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

Cuando he añadido las líneas de arriba antes de añadirla al attachemnt todo funcionaba como debería.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top