es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es posible construir y transmitir un gran documento de hoja de cálculo DocumentFormat.OpenXML sin cargar todo en la memoria?

Tengo una aplicación ASP.NET Core. Hay un informe creado a partir de datos en la base de datos que puede tener varios gigabytes de tamaño.

¿Es posible transmitir datos como respuesta desde WebAPI en fragmentos, para minimizar el uso de memoria en el servidor?

Una idea muy aproximada de lo que deseo es:

[HttpGet]
public IActionResult InformeEnorme()
{
Response.ContentType = “text/plain”;
StreamWriter sw = new StreamWriter(Response.Body);
var doc = new DocumentoHojaCalculo();
for (int i = 0; i < 100; i++)
{
var data = Db.Skip(i * 1000).Take(1000);
doc.ParteLibroAñadirDatos(data);

}

}

O, si este enfoque no es posible, ¿puedo construir un archivo en el sistema de archivos en fragmentos, iteración por iteración (sin cargar todo el documento en la memoria)?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible transmitir datos como respuesta desde WebAPI en fragmentos, de manera que se minimice el uso de memoria en el servidor. Puedes utilizar la clase StreamWriter para escribir datos en el cuerpo de la respuesta en fragmentos. También puedes construir un archivo en el sistema de archivos en fragmentos, iteración por iteración, sin cargar todo el documento en memoria.

Comments are closed.