[英]Best way to export ASP.NET form data to Excel file?
I am pretty sure it is possible, I just don't know how. 我很确定这是可能的,我只是不知道怎么做。
I have a web form with many select dropdowns and input boxes. 我有一个包含许多选择下拉列表和输入框的Web表单。
How can I export the data from these asp controls into an Excel file. 如何将这些ASP控件中的数据导出到Excel文件中。
I just need some advice to get started. 我只需要一些建议就可以开始。
Response.AddHeader("content-disposition", "attachment;filename=" + filename + ".xls"); Response.AddHeader(“ content-disposition”,“ attachment; filename =” + filename +“ .xls”)); Response.ContentType = "application/vnd.xlsx"; 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();
add controlname.rendercontrol for every control you wan to export 为您要导出的每个控件添加controlname.rendercontrol
For data exporting to xls I use this code. 对于将数据导出到xls,我使用此代码。 It's written in Visual Basic, but I think it will work for you. 它是用Visual Basic编写的,但我认为它将为您工作。 Copy - Paste and after that just feed it a DataTable and it will work it's magic. 复制-粘贴,然后将其喂入一个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.