Creación de documentos de Excel como archivo adjunto en una lista de SharePoint
-
28-09-2019 - |
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?
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.