Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ASP.NET Web服务中的Excel导出_Javascript_Jquery_Asp.net_Web Services - Fatal编程技术网

Javascript ASP.NET Web服务中的Excel导出

Javascript ASP.NET Web服务中的Excel导出,javascript,jquery,asp.net,web-services,Javascript,Jquery,Asp.net,Web Services,我有一个ASP.Net Web应用程序,在我的一个页面中,我使用JQuery JQGrid,我希望能够将JQGrid导出到Excel工作表,因此我使用JavaScript收集数组中的值,然后调用WebService来填充DataGrid中的值,我成功地完成了所有这一切,除了在WebService中导出外,未显示任何文件下载,这是我的WebService代码: [WebMethod] public void GetData(object[] Values) { DT_ToFill.Colu

我有一个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)
{
}
[WebMethod]
public void GetData(对象[]值)
{
dttofill.Columns.Add(“CaseID”);
DT_ToFill.Columns.添加(“SR”);
foreach(值中的对象值)
{
Dictionary DictVals=新字典();
DictVals=(字典)值;
字符串CaseID=DictVals[“CaseID”].ToString();
字符串SR=DictVals[“SR”].ToString();
object[]Obj=新对象[2]{CaseID,SR};
DT_ToFill.Rows.Add(Obj);
}
ExportToExcel(dttofill,Context.Response);
}
[网络方法]
公共字符串HelloWorld()
{
返回“你好世界”;
}
public void ExportToExcel(数据表dt、HttpResponse响应)
{
GridView GridView1=新的GridView();
GridView1.DataSource=dt;
Response.Buffer=true;
AddHeader(“内容处置”,“内联;文件名=Schedule_ExcelSheet.xls”);
响应。Charset=“”;
Response.ContentType=“应用程序/ms excel”;
响应。Charset=“UTF-8”;
Response.ContentEncoding=Encoding.UTF8;
StringWriter sw=新的StringWriter();
HtmlTextWriter ht=新的HtmlTextWriter(sw);
GridView1.AllowPaging=false;
GridView1.DataBind();
GridView1.渲染控制(ht);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
}
public void VerifyRenderingInServerForm(控件)
{
}
请帮忙。。。
谢谢

听起来像是要将excel文件作为对ajax请求的响应发送回去?如果是这样,我认为您无法通过ajax实现文件下载


可以像现在一样通过ajax发送数据,但可以使用新窗口或iframe(将其附加到document.body)并将src设置为返回excel文件的url。这将触发文件下载。这是我通常做的事

是的,你说得对@jForrest,但我不明白第二部分,我该怎么做。。。?!你好抱歉,我将尝试澄清。如果您打开一个新窗口或在页面上附加一个iframe,文件下载将有效。最简单的可能是一个新窗口。因此:1)执行您现在正在执行的操作,将数据发送到服务器2)打开一个新窗口。将新窗口指向一个url,该url将像您现在这样发送xls(可能使用用户会话将正确的pdf发送回来?)3当新窗口加载时,它将下载xls