Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/09/2011, 12:03
solangel
 
Fecha de Ingreso: abril-2008
Mensajes: 82
Antigüedad: 14 años, 3 meses
Puntos: 0
Archivo .csv no se abre en columnas al abrir desde excell

Hola amigos, estoy trabajando en c.net con aspx vs2010, tengo un procedimiento para exportar una grilla a un archivo .csv que se abre con excell y funciona bien.
Se supone que cada coma que separa los datos del .csv
debiera arrojarme cada dato en cada columna del excell (tengo oficce2007), pero al abrir el archivo en excell aparce cada fila en una sola columna o sea no me las separa por columnas del excel aunque tengan comas y eso que en la configuración regional de mi equipo tengo establecido la coma "," como separador de listas. He probado con muchas formas y ya no se que hacer, aquí envio el código del exportar.

protected void LinkButtonExp_Click(object sender, EventArgs e)
{

System.IO.FileStream ostrm;


try
{
string str_nombre_archivo = UserCode + exaños + exmess + exdias + exhoras + exmins + exsecs + ".csv";//xls
System.IO.File.Delete(Page.MapPath(str_nombre_arch ivo));
ostrm = new System.IO.FileStream(Page.MapPath(str_nombre_archi vo), System.IO.FileMode.Append);
System.IO.StreamWriter sw = new System.IO.StreamWriter(ostrm, System.Text.Encoding.Unicode);

String s = "";
DataSet DtaDatos = datos; //acá lleno el dataset con los datos no lo
escribí completo ya que acá no
es relevante

if (DtaDatos.Tables[0] == null)
return;

for (int i = 0; i < DtaDatos.Tables[0].Columns.Count; i++)

s = s + DtaDatos.Tables[0].Columns[i].ColumnName + ",";


sw.WriteLine(s.TrimEnd(','));
//sw.Write(sw.NewLine);
s = "";


for (int i = 0; i < DtaDatos.Tables[0].Rows.Count; i++)

{
for (int j = 0; j < DtaDatos.Tables[0].Columns.Count; j++)
s = s + HttpUtility.HtmlDecode(DtaDatos.Tables[0].Rows[i][j].ToString()) + ",";


sw.WriteLine(s.TrimEnd(','));
s = "";
}

sw.Close();
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment;filename=" + str_nombre_archivo);
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.No Cache);
Response.ContentType = "application/vnd.csv";
Response.Charset = "UTF-8";
//Response.ContentEncoding = System.Text.Encoding.Unicode;
Response.ContentEncoding = Encoding.Default;
Response.Redirect(str_nombre_archivo, false);


}
catch (Exception ex)
{
throw new Exception(ex.Message, ex);
}
}



Ayuda por favor : ( , gracias