Luchando para conseguir mi la exportación de CSV para mostrar el Archivo Guardar cuadro de diálogo. Se guarda en el archivo de aceptar, pero no permite que el usuario guarde. ¿Alguien puede ver a dónde me podría estar pasando mal con el código por favor?

string filename = Server.MapPath("~/download.csv");
StreamWriter sw = new StreamWriter(filename, false);

int iColCount = dt.Columns.Count;
for (int i = 0; i < iColCount; i++)
{
    sw.Write(dt.Columns[i]);
    if (i < iColCount - 1)
    {                
        sw.Write(",");
    }
}
sw.Write(sw.NewLine);

foreach (DataRow dr in dt.Rows)
{
    for (int i = 0; i < iColCount; i++)
    {
        if (!Convert.IsDBNull(dr[i]))
        {
            sw.Write(dr[i].ToString());
        }
        if (i < iColCount - 1)
        {
            sw.Write(",");
        }
    }
    sw.Write(sw.NewLine);
}
sw.Close();

Response.Clear();
Response.ContentType = "application/csv";
Response.AddHeader("Content-Disposition", "attachment; filename=download.csv");
Response.WriteFile(filename);
Response.Flush();
Response.End();

Pensé que el Contenido de la Disposición de la línea que trajo el cuadro de diálogo, pero tal vez hay algo más que deba hacer.

Gracias

  • ¿Usted necesita para guardar el archivo? O sólo quieren servir? También, el archivo CSV escribir algo débil y doens no tomar en cuenta múltiples líneas o comas en valores.
  • Hola, no, yo no necesario guardar el archivo – feliz sólo para servir. El algo es básico, porque eso es todo lo que necesita – los datos que se exportan es muy básica, alrededor de 8 columnas, cualquiera de las fechas, bools o solo palabras
  • Buscar en la Respuesta.BinaryWrite así que usted puede saltar a la sobrecarga adicional de escritura/lectura del archivo de disco.
InformationsquelleAutor e-on | 2012-06-22

3 Comentarios

  1. 2

    Ah, han descubierto lo que el problema es…

    Tengo el botón en un panel de actualización y no se dio cuenta de la respuesta que el objeto no trabajo en un panel de actualización.

    Hice el botón de descarga de un disparo, y ahora funciona muy bien.

    <Triggers>
        <asp:PostBackTrigger ControlID="btnDownload" />
    </Triggers>

    Gracias por las sugerencias de todos modos

    • </ContentTemplate> <Factores> <asp:PostBackTrigger ControlID=»btnDownload» /> </Disparadores> </asp:UpdatePanel>
  2. 0

    Estoy bastante seguro de que usted necesita

    Response.Write()

    después de

    Response.End()
    • De verdad? ¿Qué iba a ser la respuesta.la escritura, lo que necesitaría una cadena o un objeto?
  3. 0

    Usted podría tratar de borrar el contenido y los encabezados después de su Response.Clear() llamada:

        Response.ClearContent();
        Response.ClearHeaders(); 
    • Felicidades por la sugerencia – no hay alegría por desgracia…

Dejar respuesta

Please enter your comment!
Please enter your name here