Exportar en formato .csv con aspx .net

En el  siguiente código fuente explico como exportar datos cargados en un objeto DataSet que esta almacenado en Session a un archivo .csv, Los datos se exportan cuando el usuario  presiona exportar (Objeto de tipo ImageButtom ) en un formulario aspx .net, el lenguaje utilizado es c#:
 
El nombre del archivo de salida es contactos.csv, paso la variable de sesion a un objeto DataSet. este unbjeo dataSet lo recorro en forma de columnas para obtener los nombres de campo de columna, y recorro filas para obtener los datos de las filas (Asumiendo en alguna parte del programa es llenado),   El fin del objeto StreamWriter es permitir que los datos se almacene en el archivo .csv con tildes, las letras ñ y carcteres especiales en el Encoding correcto.
 
 
 
 
 
protected void ibtnExportarCSV_Click(object sender, ImageClickEventArgs e){
System.IO.FileStream ostrm;
try
{
String sFilename = "Contactos.csv";
System.IO.File.Delete(Page.MapPath(sFilename));
ostrm = new System.IO.FileStream(Page.MapPath(sFilename), System.IO.FileMode.Append);
System.IO.StreamWriter sw = new System.IO.StreamWriter(ostrm, System.Text.Encoding.Unicode);
String s = "";
DataSet dsContactos = (DataSet)Session["dtGridContactos"];
if (dsContactos.Tables[0] == null)
return;
for (int i = 0; i < dsContactos.Tables[0].Columns.Count; i++)
s = s + dsContactos.Tables[0].Columns[i].ColumnName + ";";
 
 
sw.WriteLine(s.TrimEnd(‘;’));
s = "";
for (int i = 0; i < dsContactos.Tables[0].Rows.Count; i++)
{
for (int j = 0; j < dsContactos.Tables[0].Columns.Count; j++)
s = s + HttpUtility.HtmlDecode(dsContactos.Tables[0].Rows[i][j].ToString()) + ";";
sw.WriteLine(s.TrimEnd(‘;’));
s = "";
}
sw.Close();
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=Contactos.csv");
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "application/vnd.csv";
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.Unicode;
Response.Redirect(sFilename, false);
}
catch (Exception ex)
{
throw new Exception(ex.Message, ex);
}
}
 

About omaracostacasas

ING SOFTWARE
This entry was posted in Microsoft .NET. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s