einen Datei-Download-Dialog von einer asp.net Web-Methode Exportieren eines Datensatz zu Excel und erhöhen
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.
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.