2015-01-27 3 views
0

다음 코드는 일부 데이터를 내보내 XLS 파일로 다운로드합니다.면도기 뷰에서 여러 엑셀 시트 내보내기

내가 원하는 것은 세 가지 목록을 모두 제공하고 각 데이터 목록을 별도의 시트로 내보내는 것입니다. 어떻게해야합니까?

내 코드는 다음과 같습니다 : 당신은 출력 HTML 수 없습니다 및 Excel 호출

public bool ExportQuestionSet(int QuestionSetNo) 
{ 
    ExportResponse response = new ExportResponse(); 
    QuestionSetTbl questionSetTbl = _questionSetDAO.GetQuestionSetByQuestionSetNo(QuestionSetNo); 
    QuestionSetContract questionSetContract = GetQuestionSetByQuestionSetNo(QuestionSetNo); 
    GridView gv = new GridView(); 
    gv.DataSource = questionSetContract.QuestionsInfoList; 
    gv.DataBind(); 
    Response.ClearContent(); 
    Response.Buffer = true; 
    Response.AddHeader("content-disposition", "attachment; filename=QuestionSet.xls"); 
    Response.ContentType = "application/ms-excel"; 
    Response.Charset = ""; 
    StringWriter sw = new StringWriter(); 
    System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw); 
    gv.RenderControl(htw); 
    Response.Output.Write(sw.ToString()); 
    Response.Flush(); 
    Response.End(); 
    return response.TaskComplete; 
} 

답변

1

합니다. 이는 합리적으로 형식이 지정된 테이블에서 잘 작동하지만 Excel 파일이 아니기 때문에 절대로 인식되지 않습니다. 파일 일 수는 있지만 여러 장을 내보낼 수는 없습니다.

적절한 Excel 파일을 만들려면 라이브러리를 사용하십시오.

1

OpenXml을 사용하는 것이 좋습니다. 꽤 빠르며 올바른 Excel 파일을 만들 것입니다. 이 스레드에서 샘플을 사용하면 : https://stackoverflow.com/a/11812551/1361993 당신은 파일의 각 시트로 차례로 출력되는 여러 데이터 테이블로 데이터 세트를 만들 수 있습니다.