Frage

exportiere ich eine Datentabelle zu Wort, wenn ich einen Dateinamen übergeben Sie den Dateinamen nicht in Öffnen / Speichern Dialog scheint Feld zu erhalten.

Hier ist, was ich tue

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;
    }
}

Wenn ich Dateinamen "report(" + System.DateTime.Now.ToString("dd/MM/yyyy"); + ")" gebe es nicht den Wert nehmen, wie TT / MM / YYYY stattdessen zeigt es Dateinamen als dd_MM_YYYY

War es hilfreich?

Lösung

Ein paar Bemerkungen über den Code:

  1. Sie den Inhaltstyp-Header ein Word-Dokument einstellen, aber Sie senden tatsächlich HTML-Inhalte durch eine Gridview-Rendering
  2. dd/MM/YYYY ist kein gültiger Dateiname wegen des / Charakters.
  3. Sie brauchen keinen try/catch Block, wenn in der catch Anweisung Sie nur throw err tun
  4. Beim Response.End am Ende ist nicht erforderlich.
  5. Verwenden Sie immer using Anweisung, wenn sie mit Einweg-Objekten wie Bäche und Leser / Schreiber zu tun, um sicherzustellen, dass die Dispose Methode in allen Fällen aufgerufen wird.

Andere Tipps

Sie sollten einen Dateinamen verwenden, wie

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

Ein Dateiname kann nicht „/".

Das ist höchstwahrscheinlich, weil / kein gültiges Zeichen für Dateinamen ist. Ihr Name muss bestimmte Kriterien erfüllen, werden sicher nicht alle verwenden

  

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

Wenn Sie Schrägstriche im Dateinamen haben, würde ich davon ausgehen, dass dies die URL der Datei würde brechen und damit die Schrägstriche werden irgendwann ersetzt?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top