einen Datei-Download-Dialog von einer asp.net Web-Methode Exportieren eines Datensatz zu Excel und erhöhen

StackOverflow https://stackoverflow.com/questions/3425840

Frage

Ich bin mit dem folgenden Code einen Datensatz zu einer Excel-Tabelle zu exportieren.

[WebMethod]
    public static void ExporttoExcel()
    {
        DataSet ds;
       productfactory pf=new productfactory();
        ds = pf.getproducts();
        HttpResponse response = HttpContext.Current.Response;

        // first let's clean up the response.object
        response.Clear();
        response.Charset = "";
        response.ContentEncoding = System.Text.Encoding.Default;

        // set the response mime type for excel
        response.ContentType = "application/vnd.ms-excel";
        response.AddHeader("Content-Disposition", "attachment;filename=\"products.xls\"");

        // create a string writer
        using (StringWriter sw = new StringWriter())
        {
            using (HtmlTextWriter htw = new HtmlTextWriter(sw))
            {
                // instantiate a datagrid
                DataGrid dg = new DataGrid();                    
                dg.DataSource = ds.Tables[0];
                dg.DataBind();
                dg.RenderControl(htw);
                string filepath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\products.xls";                    
                response.Write(sw.ToString());
               // response.End();

            }
        }       
    }

Das Problem ist, dass es nicht Datei herunterladen Raising und somit kein Export stattfindet. Der gleiche Code funktioniert gut in einem normalen Verfahren. Aber mit der Web-Methode funktioniert es nicht.

War es hilfreich?

Lösung

Ich schlage vor, eine Httphandler endet in Ashx zu machen, und Platz in ihm den Code, der die Excel-Datei erstellen.

dann rufen Sie es von Ihrem JavaScript-Code wie das.

document.location.href = "ExporttoExcel.ashx";

Andere Tipps

Das Problem ist, dass webMethods ist nicht zuzulassen, dass Sie vertraut mit dem Response-Objekt zu interagieren (offensichtlich, dass es nicht möglich war und man mußte HttpContext.Current.Response verwenden, um es zu bekommen). WebMethods sind so konzipiert, Blackbox für den Benutzer zu sein. Sie werden durchführen und Aktion und / oder einen Wert zurückgeben.

Vielleicht können Sie uns eine bessere Vorstellung von dem, was Sie versuchen zu erreichen, und wir können eine alternative Lösung vorschlagen.

kann u verwenden, um eine dynamische iframe mit URL-Satz auf die Web-Handler zu erstellen, um die Excel dies zu generieren wird die Datei herunterladen erhöht mit aus der aktuellen Seite veröffentlichen.

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