2014-12-08 2 views
1

내 테이블의 모든 레코드를 Excel 파일로 쓰고 싶습니다. 내 테이블에 약 30000 개의 행이 있습니다.변환 테이블

저는 Excel20000 행만 쓸 수 있습니다. System out of memory 예외가 발생합니다.

이것은 내 코드입니다. 미리 감사드립니다.

using (SqlConnection con = new SqlConnection(strconnection)) 
{ 
    using (SqlCommand cmd = new SqlCommand("SELECT * FROM tbl_ReportwithoutDup")) 
    { 
     using (SqlDataAdapter sda = new SqlDataAdapter()) 
     { 
      cmd.Connection = con; 
      sda.SelectCommand = cmd; 
      using (DataTable dt = new DataTable()) 
      { 
       sda.Fill(dt); 
       using (XLWorkbook wb = new XLWorkbook()) 
       { 
        wb.Worksheets.Add(dt, "Report1"); 

        Response.Clear(); 
        Response.Buffer = true; 
        Response.Charset = ""; 
        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
        Response.AddHeader("content-disposition", "attachment;filename=Report1.xlsx"); 
        using (MemoryStream MyMemoryStream = new MemoryStream()) 
        { 
         wb.SaveAs(MyMemoryStream); 
         MyMemoryStream.WriteTo(Response.OutputStream); 
         Response.Flush(); 
         Response.End(); 
        } 
       } 
      } 
     } 
    } 
} 
+0

Excel Interop 서비스 라이브러리를 사용하고 있습니까? 또는 Excel 파일을 생성하기 위해 어떤 라이브러리를 사용하고 있습니까? – mason

+0

서버에서 interop을 사용하지 마십시오. 다음을보십시오. http://stackoverflow.com/a/9569827/351383 –

답변

0

그래서이 아닌 완벽한 솔루션,하지만 당신이 웹 프레임 워크 (asp.net)를 사용하고 있기 때문에, 당신은 항상 그냥 HTML 테이블에 모두 써, 다음의 내용 유형을 설정할 수 있습니다 application/vnd.ms-excel에 대한 응답입니다. 결과적으로 브라우저는 클라이언트가 기본적으로 Excel에서 열리는 CSV 파일을 다운로드합니다.

+0

이 코드를 사용하고 있습니다. http://www.aspsnippets.com/Articles/Export-data-from- SQL-Server-to-Excel-in-ASPNet-C 및 VBNet.aspx –

+0

? 오케이 ... 내 요점은 당신이 원하는 경우 서버에서 Excel을 사용하여 모든 것을 할 수 있다는 것입니다. 그리고 더 많은 메모리를 효율적으로 사용할 수 있습니다. – Paul

+0

Paul, HTML 표를 작성한다고 말하지만 사용자가 CSV 파일을 다운로드한다고합니까? 어떻게 작동합니까? – mason