2012-08-11 2 views
0

이 ASP.Net 웹 응용 프로그램을 가지고 있으며 내 페이지 중 하나에서 JQuery JQGrid를 사용하고 있습니다. JQGrid를 Excel 시트로 내보낼 수 있기를 원하므로 JavaScript를 사용하여 수집했습니다.ASP.NET 웹 서비스에서 Excel 내보내기

[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) 
{ 
} 

: 다음 배열과 값은, 내가 성공적으로 어떤 파일 다운로드가 나타나지 WebService에에 수출을 제외하고, 모든 일을,이 내 WebService에 코드 데이터 그리드의 값을 채우기 위해 WebService를 호출 도와주세요 ... 감사합니다.

답변

0

ajax 요청에 대한 응답으로 Excel 파일을 다시 보내는 것처럼 들리십니까? 그렇다면 아약스를 통해 파일 다운로드 작업을 할 수 있다고 생각하지 않습니다.

아마도 지금하고있는 것처럼 아약스를 통해 데이터를 보내지 만 새 창이나 iframe (document.body에 추가)을 수행하고 src를 Excel 파일을 반환하는 url로 설정하십시오. 파일 다운로드가 시작됩니다. 이것은 내가 보통하는 일이다.

+0

예, 맞습니다. @ 포레스트,하지만 두 번째 부분을 이해할 수 없었습니다. 어떻게해야합니까?! – YMELS

+0

안녕하세요. 죄송합니다. 명확히하려고 노력하겠습니다. – jForrest

+0

새 창을 열거 나 iframe을 페이지에 추가하면 파일 다운로드가 작동합니다. 가장 쉬운 방법은 새로운 창입니다. 그래서 : 1) 서버에 데이터를 보내기 위해 지금하고있는 일을하십시오. 2) 새 창을여십시오. 당신이 지금하고있는 것처럼 어쩌면 xls을 보낼 URL을 가리 키십시오 (어쩌면 사용자 세션을 사용하여 올바른 pdf를 보냅니다). 3) 새 창이로드되면 xls을 다운로드합니다 – jForrest