簡體   English   中英

將ASP.NET表單數據導出到Excel文件的最佳方法?

[英]Best way to export ASP.NET form data to Excel file?

我很確定這是可能的,我只是不知道怎么做。

我有一個包含許多選擇下拉列表和輸入框的Web表單。

如何將這些ASP控件中的數據導出到Excel文件中。

我只需要一些建議就可以開始。

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,我使用此代碼。 它是用Visual Basic編寫的,但我認為它將為您工作。 復制-粘貼,然后將其喂入一個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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM