Export zu Wort mit einem Dateinamen scheint nicht zu Arbeit
-
21-09-2019 - |
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
Lösung
Ein paar Bemerkungen über den Code:
- Sie den Inhaltstyp-Header ein Word-Dokument einstellen, aber Sie senden tatsächlich HTML-Inhalte durch eine Gridview-Rendering
-
dd/MM/YYYY
ist kein gültiger Dateiname wegen des/
Charakters. - Sie brauchen keinen
try/catch
Block, wenn in dercatch
Anweisung Sie nurthrow err
tun - Beim
Response.End
am Ende ist nicht erforderlich. - Verwenden Sie immer
using
Anweisung, wenn sie mit Einweg-Objekten wie Bäche und Leser / Schreiber zu tun, um sicherzustellen, dass dieDispose
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?