Pregunta

Me exportar una tabla de datos a la palabra, al pasar un nombre de archivo que no parece para obtener el nombre del archivo en el cuadro Abrir / Guardar de diálogo.

Esto es lo que estoy haciendo

public static void Convertword(DataTable dt, HttpResponse Response,string filename)
{
    try
    {
        Response.Clear();
        Response.AddHeader("content-disposition", "attachment;filename=" + filename + ".doc");
        Response.Charset = "";
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.ContentType = "application/vnd.word";
        System.IO.StringWriter stringWrite = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite);
        System.Web.UI.WebControls.GridView dg = new System.Web.UI.WebControls.GridView();
        dg.DataSource = dt;
        dg.DataBind();
        dg.RenderControl(htmlWrite);
        Response.Write(stringWrite.ToString());
        Response.End();
    }
    catch(Exception err)
    {
        throw err;
    }
}

Cuando paso "report(" + System.DateTime.Now.ToString("dd/MM/yyyy"); + ")" nombre de archivo que no tiene el valor como dd / MM / AAAA en cambio, muestra el nombre del archivo como dd_MM_YYYY

¿Fue útil?

Solución

algunas observaciones acerca de su código:

  1. Usted está configurando la cabecera de tipo de contenido a un documento de Word, pero en realidad se está enviando el contenido HTML mediante la prestación de un GridView
  2. dd/MM/YYYY no es un nombre de archivo válido debido al carácter /.
  3. Usted no necesita un bloque try/catch si en la declaración catch sólo se está haciendo throw err
  4. Llamando Response.End al final no es necesario.
  5. Siempre declaración uso using cuando se trata de objetos desechables, tales como arroyos y lectores / escritores para asegurar que el método Dispose se invoca en todos los casos.

Otros consejos

Se debe utilizar un nombre de archivo como

String.Format("report{0:ddMMyyyy}.doc", DateTime.Now);

Un nombre de archivo no puede tener "/".

Esto es más probable porque / no es un carácter válido para nombres de archivo. Su nombre debe cumplir con ciertos criterios, asegúrese de no utilizar cualquiera de

  

* . " / \ [ ] : ; | = ,

Si tiene barras diagonales en el nombre del archivo, yo supongo que esto rompería el URL para el archivo y por lo tanto las barras están siendo reemplazados en algún momento?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top