Uitvoer na woord met 'n lêernaam Dit lyk nie of werk
-
21-09-2019 - |
Vra
Ek voer 'n datatable te woord, toe ek verby 'n lêer naam dit lyk nie of die lêernaam in Open / Save dialoog te kry.
Hier is wat ek doen
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;
}
}
Wanneer ek slaag lêernaam "report(" + System.DateTime.Now.ToString("dd/MM/yyyy");
+ ")"
dit nie die waarde as neem dd / mm / jjjj in plaas dit toon lêernaam as dd_MM_YYYY
Oplossing
enkele opmerkings oor jou kode:
- Jy is die opstel van die inhoud tipe kop na 'n Word-dokument, maar jy is eintlik die stuur van HTML inhoud deur die lewering van 'n GridView
-
dd/MM/YYYY
is nie 'n geldige lêernaam as gevolg van die/
karakter. - Jy hoef nie 'n
try/catch
blok as in diecatch
verklaring jy netthrow err
doen - Oproep
Response.End
aan die einde is nie nodig nie. - Altyd gebruik
using
verklaring by die behandeling van besteebare voorwerpe soos strome en lesers / skrywers om te verseker dat dieDispose
metode in alle gevalle uitgeroep.
Ander wenke
Jy moet 'n lêernaam soos gebruik
String.Format("report{0:ddMMyyyy}.doc", DateTime.Now);
'n lêernaam kan nie "/".
Dit is waarskynlik omdat /
is nie 'n geldige karakter vir lêername. Jou naam moet sekere kriteria voldoen, word seker nie aan enige van gebruik
* . " / \ [ ] : ; | = ,
As jy vorentoe houe in die lêernaam, sou ek neem aan dat hierdie die URL sal breek om die lêer en vandaar die houe word vervang op 'n stadium?