Exportación de palabra con un nombre de archivo no parece funcionar
-
21-09-2019 - |
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
Solución
algunas observaciones acerca de su código:
- 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
-
dd/MM/YYYY
no es un nombre de archivo válido debido al carácter/
. - Usted no necesita un bloque
try/catch
si en la declaracióncatch
sólo se está haciendothrow err
- Llamando
Response.End
al final no es necesario. - Siempre declaración uso
using
cuando se trata de objetos desechables, tales como arroyos y lectores / escritores para asegurar que el métodoDispose
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?