Exporter vers mot avec un nom de fichier ne semble pas fonctionner
-
21-09-2019 - |
Question
exporter un datatable à mot, quand je passe un nom de fichier, il ne semble pas obtenir le nom de fichier dans Ouvrir / Enregistrer boîte de dialogue.
Voici ce que je fais
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;
}
}
Quand je passe le nom "report(" + System.DateTime.Now.ToString("dd/MM/yyyy");
+ ")"
il ne prend pas la valeur dd / MM / YYYY à la place, il montre le nom du fichier dd_MM_YYYY
La solution
Quelques remarques sur votre code:
- Vous définissez l'en-tête de type de contenu à un document Word, mais vous envoyez en réalité le contenu HTML en rendant un GridView
-
dd/MM/YYYY
n'est pas un nom de fichier valide en raison du caractère/
. - Vous n'avez pas besoin d'un bloc
try/catch
si la déclaration decatch
vous ne faitesthrow err
- L'appel
Response.End
à la fin n'est pas nécessaire. - Utilisez toujours la déclaration de
using
lorsqu'ils traitent avec des objets jetables tels que les flux et les lecteurs / écrivains pour faire en sorte que la méthodeDispose
est invoquée dans tous les cas.
Autres conseils
Vous devez utiliser un nom de fichier comme
String.Format("report{0:ddMMyyyy}.doc", DateTime.Now);
Un nom de fichier ne peut pas avoir « /".
Ce qui est le plus probablement parce que /
n'est pas un caractère valide pour les noms de fichiers. Votre nom doit remplir certains critères, assurez-vous de ne pas utiliser de
* . " / \ [ ] : ; | = ,
Si vous avez des slashes dans le nom de fichier, je suppose que cela casserait l'URL du fichier et par conséquent les barres obliques sont remplacés à un moment donné?