GridView의 데이터를 EXCEL로 내보내기

5104 단어 GridView
백그라운드에서 데이터 조회 작업을 할 때, 우리는 GridView 컨트롤러를 사용하여 데이터 표시를 할 수 있습니다. 때로는 GridView 컨트롤러에 표시된 데이터를 EXCEL 파일로 내보내야 하고, GridView 컨트롤러를 호출하는 RenderContol 방법을 통해 데이터를 문자 흐름으로 내보내야 합니다.
먼저 GridView 컨트롤에 데이터 원본을 설정하고 귀속 작업을 한 다음 내보내기 단추에 다음 클릭 이벤트 코드를 추가합니다.

   
protected void btnExport_Click(object sender, EventArgs e)
{
Response.Clear();
Response.AppendHeader(
"Content-Disposition", "attachment;filename=FileName.xls");
//
Response.Charset = "GB2312";
Response.ContentEncoding
= System.Text.Encoding.GetEncoding("GB2312");
// excel 。
Response.ContentType = "application/ms-excel";
StringWriter sw
= new StringWriter();
HtmlTextWriter htw
= new HtmlTextWriter(sw);
GridView1.RenderControl(htw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
}

현재 내보내기 단추 페이지를 누르면 오류가 발생합니다. "GridView 형식"컨트롤 "GridView1"은runat=server가 있는 창 표시에 있어야 합니다.이것은 페이지에 Verify Rendering InServer Form 방법에 대한 다시 쓰기를 추가하면 데이터를 성공적으로 내보낼 수 있습니다.

     
public override void VerifyRenderingInServerForm(Control control)
{
}

우리가 내보낸 데이터가 숫자일 때, 예를 들어 번호나 신분증 번호 등은 내보낸 데이터에서 번호 앞의 0이 없어지고 신분증 번호가 과학적인 계수법이 된 것을 발견했다.이것은 GridView의 RowDataBound 이벤트 처리 함수에 내보낸 숫자 열에 스타일을 추가하면 됩니다.

       
protected void GridView1_RowDataBound( object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//
e.Row.Cells[ 1 ].Attributes.Add( " style " , " vnd.ms-excel.numberformat:@; " );
}
}

GridView에 페이지가 있을 때 데이터를 내보낼 때 페이지가 잘못 표시됩니다. "Render () 를 실행하는 과정에서만 Register ForEventValidation 을 호출할 수 있습니다."이것은 <% @ Page% > 에서 Enable Event Validation = "false"를 설정하면 됩니다.

좋은 웹페이지 즐겨찾기