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

Was dit nuttig?

Oplossing

enkele opmerkings oor jou kode:

  1. 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
  2. dd/MM/YYYY is nie 'n geldige lêernaam as gevolg van die / karakter.
  3. Jy hoef nie 'n try/catch blok as in die catch verklaring jy net throw err doen
  4. Oproep Response.End aan die einde is nie nodig nie.
  5. Altyd gebruik using verklaring by die behandeling van besteebare voorwerpe soos strome en lesers / skrywers om te verseker dat die Dispose 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?

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top