将数据集导出到 Excel 并从 asp.net Web 方法引发文件下载对话框 [英] Export a data set to Excel and raise a file download dialog from an asp.net web method

查看:23
本文介绍了将数据集导出到 Excel 并从 asp.net Web 方法引发文件下载对话框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

I am using the following code to export a data set to an Excel sheet.

[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();

            }
        }       
    }

The problem is that it's not raising file download and hence no export is taking place. The same code works fine in a normal method. But with the web method it's not working.

解决方案

I suggest to make an HttpHandler ending in ashx, and place inside him your code that create the excel file.

then call it from your javascript code like that.

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

这篇关于将数据集导出到 Excel 并从 asp.net Web 方法引发文件下载对话框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆