2013-07-06 3 views
0

문자열 배열을 Datagrid에 바인딩 한 다음 클라이언트 컴퓨터에 파일을 자동 저장하여 데이터를 내보내려면 데이터를 내보낼 필요가 있습니다. 아래 코드는 내가 사용하는 코드입니다.Datagrid 데이터를 Excel로 내보내기 C#

string fileName = "attachment;filename= DetailReport.xlsx"; 
     Response.Clear(); 
     Response.AddHeader("content-disposition", fileName); 
     Response.Charset = ""; 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     Response.ContentType = "application/vnd.ms-excel"; 
     System.IO.StringWriter stringWrite = new System.IO.StringWriter(); 
     System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite); 
     grdExcel.RenderControl(htmlWrite); 
     Response.Output.Write(stringWrite.ToString()); 
     Response.Flush(); 
     Response.End(); 

성공적으로 파일을 내보내고 클라이언트 컴퓨터에 저장하지만 파일의 콘텐츠에 모든 HTML 태그가 포함되어 있으면 내 코드가 잘못된 것일 수 있습니까? 도와주세요!!

+0

xlsx 형식 대신 csv 형식을 내보내십시오. http://stackoverflow.com/questions/13563343/simple-way-to-export-datagridview-to-excel –

+0

tip - http : //social.msdn. microsoft.com/Forums/vstudio/en-US/08d69589-4052-410f-a85c-c38493c0a664/creatingwriting-to-an-excel-file-with-c –

답변

0

TransmitFile 또는 BinaryWrite 방법을 사용하여 파일을 작성해야합니다. 단지 HtmlTextWriter을 사용하면 도움이되지 않습니다.

here을 참조하십시오.

0

도움이 될 수 있습니다!

 Response.Buffer = true; 
     Response.ContentType = "application/text"; 
     Response.AppendHeader("Content-Disposition", "attachment; filename=file1.xls"); 
     Response.TransmitFile(fileName); 
     Response.Flush(); 
     Response.End(); 
+0

문자열 작성기 및 html 텍스트 작성기가 필요합니까? – user2015043

+0

Response.TransmitFile (fileName);을 사용하려고합니다. 파일이 클라이언트 컴퓨터에 저장되어 있기 때문에 "파일의 경로를 찾을 수 없습니다 ..."라는 오류 메시지가 나타납니다. 도와주세요, 고마워요 – user2015043

+0

클라이언트 컴퓨터에 파일을 만드는 대신 서버에서 만들 수 있습니다. 서버의 경로를 사용하십시오. 서버의 폴더 (파일을 저장하는 데 사용하는 폴더)에 한 번만 사용 권한을 부여하십시오. 클라이언트가 파일을 다운로드하면 코드를 작성하여 파일을 삭제할 수 있습니다. 따라서 정크 파일은 사용 후 삭제됩니다. – Priya

0

Response.Output.Write 대신 Response.Write를 사용하십시오.

+0

나는 이미 그래도 똑같은 생각을 해볼까? – user2015043

관련 문제