180 messaggi dal 06 settembre 2002
Salve a tutti volevo chiedere come poter risolver il problema del System.OutOfMemoryException che si verifica quando provo ad esportare in formato excel una mole di dati.

Il problema mi si verifica qui:

grid.DataSource = dt; // dt è la mia datatable
grid.DataBind(); //grid è la gridview

grid.RenderControl(hw); // l'errore di memoria mi si verifica proprio qui

La query che mi riempe il datatable impiega circa 12 secondi, ma lì non si verifica il timeout; il file excel che dovrebbe essere generato occupa sicuro più di 30 Mega.

Ho provato anche altra soluzioni per esportare in excel, ma sono addirittura più lente; ho provato con le librerie di Microsoft.

Forse non dovrei utilizzare una gridview o forse non una datatable.

Qualcuno può darmi consigli per esportare una mole di dati così grande?

Grazie.
Ciao,

prova ad usare un formato csv (molto più leggero di un file excel).

Per il resto, non conoscendo la logica e l'implementazione, risulta difficile fornire altri suggerimenti utili.

Fabrizio Canevali
Secondo me utilizzare questo approccio con grosse moli di dati è letteralmente un suicidio.

Consiglio: apri la sorgente dati con un datareader che scorri sequenzialmente (e quindi senza portarti in memory mezzo database). Poi apri un filestream e, letta una riga da db, scrivi una riga csv sul file.

Il tutto dentro un paio di using per essere sicuri di non lasciare aperti file e cursore.

A presto,
m.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.