2013-06-13 5 views
0

나는 그것이 가능하다는 것을 확신한다. 나는 어떻게해야할지 모른다.ASP.NET 양식 데이터를 Excel 파일로 내보내는 가장 좋은 방법은 무엇입니까?

많은 드롭 다운 목록과 입력 상자가있는 웹 양식이 있습니다.

어떻게 이러한 ASP 컨트롤의 데이터를 Excel 파일로 내보낼 수 있습니까?

시작하려면 몇 가지 조언이 필요합니다.

+2

http://www.codeproject.com/Articles/5123/Opening-and-Navigating-Excel-with-C –

+0

은 당신이 새로운 것을 시도 않았다 시작하려면? 너 주위에 구글 했니? –

+0

@ 스 티브 그 기사를 주셔서 감사합니다. 매우 도움이됩니다. – Singh

답변

0

수출 완. 그것은 비주얼 베이직으로 작성되었지만 그것이 효과가있을 것이라고 생각합니다. 복사 - 붙여 넣기를 한 후 DataTable에 피드하면 마술이 적용됩니다.

Public Shared Sub DataTableToExcelResponse(dt as DataTable, filename as String) 
    HttpContext.Current.Response.Clear(); 
    HttpContext.Current.Response.ContentType = "application/vnd.ms-excel" 
    HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename="+filename) 
    HttpContext.Current.Response.Write(DataTableToExcel(dt)) 
    HttpContext.Current.Response.End 
End Sub 

Public Shared Function DataTableToExcel(dt As DataTable) As String 
    Dim responseWriter As new StringWriter() 
    responseWriter.Write("<html>") 
    responseWriter.Write("<head><meta http-equiv=""Content-Type"" content=""text/html"" charset=""UTF-8"" /></head>") 
    responseWriter.Write("<style>") 
    responseWriter.Write("table.download{border-collapse:collapse;}") 
    responseWriter.Write("table.tr{vertical-align:top;}") 
    responseWriter.Write("table.th{text-align:left; font-weight:bold;}")  
    responseWriter.Write("table.td{}") 
    responseWriter.Write("</style>")  
    responseWriter.Write("<body>") 
    responseWriter.Write("<table class='download' border='1'>") 
    responseWriter.Write("<tr>") 
    For Each dc As DataColumn In dt.Columns 
     responseWriter.Write("<th class='download'>") 
     responseWriter.Write(dc.ColumnName) 
     responseWriter.Write("</th>") 
    Next 
    responseWriter.Write("</tr>") 

    For Each dr As DataRow In dt.Rows 
     responseWriter.Write("<tr class='download'>") 

     For i As Integer=0 to dt.Columns.Count-1 Step 1 

      If dt.Columns(i).DataType.ToString()="System.String" Then 
       responseWriter.Write("<td class='download' style='mso-number-format:\@;'>") 
       responseWriter.Write(dr(i).ToString()) 
       ElseIf dt.Columns(i).DataType.ToString()="System.DateTime" Then 

        responseWriter.Write("<td class='download' style='mso-number-format:""dd\/mm\/yyyy"";'>") 
        Try 
         responseWriter.Write(CType(dr(i),DateTime).ToString("dd/MMM/yyyy")) 
        Catch ex As Exception 
         responseWriter.Write(dr(i).ToString()) 
        End Try 
       Else 
       responseWriter.Write("<td>") 
       responseWriter.Write(dr(i).ToString()) 
      End If 


      responseWriter.Write("</td>") 
     Next 
     responseWriter.Write("</tr>") 

    Next 

    responseWriter.Write("</table>") 
    responseWriter.Write("</body>") 
    responseWriter.Write("</html>") 



    Return responseWriter.ToString() 
End Function 
1

Response.AddHeader ("content-disposition", "attachment; filename ="+ filename + ".xls"); Response.ContentType = "application/vnd.xlsx"; 모든 제어를위한

System.IO.StringWriter stringWriter = new System.IO.StringWriter(); 

    System.Web.UI.HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter); 
    eachControl.RenderControl(htmlWriter); 


    Response.Output.Write(stringWriter.ToString()); 
    Response.End(); 

추가 controlname.rendercontrol 당신은이 코드를 사용 XLS로 내보낼 데이터의

관련 문제