Uso OpenXML SDK 2.0 para generar archivos de Excel con gran cantidad de datos, appox. 1000000 filas, y necesito optimizar el uso de la memoria porque mi máquina se desacelera muy rápido.Cómo realizar un búfer y una corriente de forma eficaz en Open XML SDK
Quiero resolver este problema al enjuagar parte del árbol DOM generado en un archivo en tiempo de ejecución. Yo hago mi propio buffering de datos. P. ej., Tengo 100000 registros para escribir y deseo que se ejecute el flujo en el archivo cuando agregue 1000 filas en la hoja de trabajo de Excel. Lo hago utilizando el método worksheetPart.Worksheet.Save(). Documantation dice convertía este método Save(): "guarda los datos en el árbol DOM de nuevo a la parte Podría ser llamado varias veces, así Cada vez que se llama, la corriente se vaciará.".
foreach (Record m in dataList)
{
Row contentRow = CreateContentRow(index, m); // my own method to create row content
//Append new row to sheet data.
sheetData.AppendChild(contentRow);
if (index % BufferSize == 0)
{
worksheetPart.Worksheet.Save();
}
index++;
}
Este método funciona porque la tabla de uso de memoria tiene forma de sierra, pero desafortunadamente el uso de memoria crece a tiempo.
¿Alguien tiene alguna idea de cómo resolver este problema?
Gracias por su respuesta. Comprobaré si SpreadsheetGear me ayuda a resolver mi problema. Describo mi problema de rendimiento de Open XML SDK en esta publicación: http: //blog.goyello.com/2009/08/25/read-before-using-it-open-xml-sdk-performance-analysis/ –
A la perfección pregunta redactada que aparece como primer resultado en Google. Visto 1200 veces. ¿Y la única respuesta es un enchufe lamentable para una biblioteca minorista de terceros? – mdisibio
Especialmente porque es una biblioteca de terceros muy costosa. A $ 1000, spreadsheetgear es demasiado caro. – Wade73