2012-06-22 3 views
0

내 CSV 내보내기를 통해 파일 저장 대화 상자를 표시하도록 고생했습니다. 파일을 저장하면 저장되지만 사용자가 저장할 수는 없습니다. 아무도 내가 코드에 문제가 생길 수 있음을 알 수 있습니까?파일 저장 대화 상자를 사용하여 CSV에 데이터 테이블 내보내기 - C#

string filename = Server.MapPath("~/download.csv"); 
StreamWriter sw = new StreamWriter(filename, false); 

int iColCount = dt.Columns.Count; 
for (int i = 0; i < iColCount; i++) 
{ 
    sw.Write(dt.Columns[i]); 
    if (i < iColCount - 1) 
    {     
     sw.Write(","); 
    } 
} 
sw.Write(sw.NewLine); 

foreach (DataRow dr in dt.Rows) 
{ 
    for (int i = 0; i < iColCount; i++) 
    { 
     if (!Convert.IsDBNull(dr[i])) 
     { 
      sw.Write(dr[i].ToString()); 
     } 
     if (i < iColCount - 1) 
     { 
      sw.Write(","); 
     } 
    } 
    sw.Write(sw.NewLine); 
} 
sw.Close(); 

Response.Clear(); 
Response.ContentType = "application/csv"; 
Response.AddHeader("Content-Disposition", "attachment; filename=download.csv"); 
Response.WriteFile(filename); 
Response.Flush(); 
Response.End(); 

대화 상자를 가져온 Content Disposition 행이 있다고 생각했지만 다른 작업이 필요할 수도 있습니다.

감사

+0

는 파일을 저장해야합니까? 아니면 그냥 봉사하고 싶습니까? 또한 CSV 작성 알고리즘은 약하며 다중 행 또는 쉼표를 고려하지 않습니다. – banging

+0

안녕하세요. 파일을 저장할 필요가 없습니다. 제공하기 만하면 행복합니다. 그것이 필요한 전부이기 때문에 골격은 기본입니다 - 내보낼 데이터는 매우 기본입니다 - 날짜, bool 또는 단일 단어 중 약 8 개의 열 –

+1

쓰기/읽기에서 여분의 오버 헤드를 건너 뛸 수 있도록 Response.BinaryWrite를 살펴보십시오. 디스크로부터의 파일. – banging

답변

2

아, 문제가 무엇인지 발견했습니다 ...

업데이트 패널에서 버튼을 얻었으며 응답 객체가 업데이트 패널에서 작동하지 않는다는 것을 알지 못했습니다.

다운로드 버튼을 트리거로 만들었으니 이제는 훌륭하게 작동합니다. 제안에 대한

<Triggers> 
    <asp:PostBackTrigger ControlID="btnDownload" /> 
</Triggers> 

어쨌든 감사

+0

0

나는 당신이 필요로하는 확신

Response.Write() 

Response.End() 
+0

정말요? 문자열이나 객체가 필요한 것처럼 응답 작성은 무엇입니까? 제안에 대한 –

0

당신은 당신의 Response.Clear() 통화 후 내용과 헤더 삭제 시도 할 수 후 :

Response.ClearContent(); 
    Response.ClearHeaders(); 
+0

건배 - 기쁨 불행하게도 ... –

관련 문제