繁体   English   中英

ASP.NET Web服务中的Excel导出

[英]Excel Export in ASP.NET Web Service

我有这个ASP.Net Web应用程序,在我使用JQuery JQGrid的一个页面中,我希望能够将JQGrid导出到Excel工作表,因此我使用JavaScript收集了数组中的值,然后将其称为WebService将值填充到DataGrid中,我成功完成了所有操作,除了在WebService中进行导出外,没有文件下载出现,这是我的WebService代码:

[WebMethod]
public void GetData(object[] Values)
{
    DT_ToFill.Columns.Add("CaseID");
    DT_ToFill.Columns.Add("SR");

    foreach (object Value in Values)
    {
        Dictionary<string, object> DictVals = new Dictionary<string, object>();
        DictVals = (Dictionary<string, object>)Value;
        string CaseID = DictVals["CaseID"].ToString();
        string SR = DictVals["SR"].ToString();

        object[] Obj = new object[2] { CaseID, SR };
        DT_ToFill.Rows.Add(Obj);
    }
    ExportToExcel(DT_ToFill, Context.Response);
}

[WebMethod]
public string HelloWorld()
{
    return "Hello World";
}

public void ExportToExcel(DataTable dt, HttpResponse Response)
{
    GridView GridView1 = new GridView();
    GridView1.DataSource = dt;
    Response.Buffer = true;
    Response.AddHeader("Content-Disposition", "inline;filename=Schedule_ExcelSheet.xls");
    Response.Charset = "";
    Response.ContentType = "application/ms-excel";
    Response.Charset = "UTF-8";
    Response.ContentEncoding = Encoding.UTF8;
    StringWriter sw = new StringWriter();
    HtmlTextWriter ht = new HtmlTextWriter(sw);
    GridView1.AllowPaging = false;
    GridView1.DataBind();
    GridView1.RenderControl(ht);
    Response.Output.Write(sw.ToString());
    Response.Flush();
    Response.End();
}

public void VerifyRenderingInServerForm(Control control)
{
}

帮助请...谢谢

听起来您正在将excel文件发回作为对ajax请求的响应? 如果是这样,我认为您无法通过ajax进行文件下载。

也许像现在一样通过ajax发送数据,但是然后执行新窗口或iframe(将其附加到document.body)并将src设置为返回excel文件的网址。 那应该触发文件下载。 这就是我通常要做的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM