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

Était-ce utile?

La solution

Quelques remarques sur votre code:

  1. 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
  2. dd/MM/YYYY n'est pas un nom de fichier valide en raison du caractère /.
  3. Vous n'avez pas besoin d'un bloc try/catch si la déclaration de catch vous ne faites throw err
  4. L'appel Response.End à la fin n'est pas nécessaire.
  5. 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éthode Dispose 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é?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top