2016-08-16 3 views
1

ASP.NET Entity Framework를 사용하고 있는데 Excel로 내보내는 방법을 사용하면 작동하지만 한 가지 문제가 있습니다. 내 데이터에 부울이 있고 Excel 스프레드 시트에서 부울은 반환하지 않으며 단지 비어 있습니다. 나는 예 또는 아니오를 인쇄 할 것으로 예상됩니다. 이것을 어떻게 할 수 있습니까? 여기 ASP.NET GridView를 부울로 Excel에 변환

내 코드입니다 :

public ActionResult ExportData() 
{ 
    GridView gv = new GridView(); 
    gv.DataSource = db.Data.ToList().Where(model => model.closed == false); 
    gv.DataBind(); 
    Response.ClearContent(); 
    Response.Buffer = true; 
    Response.AddHeader("content-disposition", "attachment; filename=IssueTracking.xls"); 
    Response.ContentType = "application/ms-excel"; 
    Response.Charset = ""; 
    StringWriter sw = new StringWriter(); 
    HtmlTextWriter htw = new HtmlTextWriter(sw); 
    gv.RenderControl(htw); 
    Response.Output.Write(sw.ToString()); 
    Response.Flush(); 
    Response.End(); 

    return RedirectToAction("Index"); 

} 

아니면 단지 거짓 데이터를 얻고으로 실제로 폐쇄에 대한 모든 행의 GridView에서 내보내기 없음

+1

'EPPlus'를 사용하는 것이 더 좋습니다. http://epplus.codeplex.com/ –

+0

부울 필드가 ASPX 페이지의 Gridview에 매핑되는 방법을 보여줄 수 있습니까? – techspider

+0

나는 ASPX 페이지를 가지고 있지 않다. 이것은 MVC 5이다. – user979331

답변

0

를 반환 할 수 없었다 렌더링 실제의 모든 컨텐츠를한다 함유량. TemplateFieldGridView에 정의하고 Yes 또는 No을 출력하지 않으면이 기능이 작동하지 않습니다. 동등한 GridView 템플릿 필드는 다음과 같이 표시됩니다 : 당신이 MVC를 사용하고 제공

<asp:TemplateField HeaderText="Status" ItemStyle-Width="30"> 
    <ItemTemplate><%# (Boolean.Parse(Eval("IsActive").ToString())) ? "Yes" : "No" %></ItemTemplate> 
</asp:TemplateField> 

, 그것은이 작업을 달성하기 위해 선호하는 방법이 아닙니다. 은 항상을 올바른 방법으로 처리합니다..

이 방법을 계속 사용하려면 프로그래밍 방식으로 필드를 추가해야합니다. 자세한 내용에 대해서는 TemplateField 동적

var templateField = new TemplateField(); 
templateField .ItemTemplate = new LinkColumn(); 
gv.Columns.Add(templateField); 

만들기 BoundField 동적

BoundField boundField = new BoundField(); 
boundField.HeaderText = "HeaderText"; 
boundField.DataField = "FiledToBeMapped" 
gv.Columns.Add(boundField); 

만들기

linklinklink을 사용합니다.

+0

이것은 나에게 이해가되지 않는다 :( – user979331

관련 문제