将数据集保存在excel中,并允许用户将其下载到客户机中

我正在开发一个应用程序,我希望我在用户的datagrid视图中显示数据集。现在用户想要以excel格式下载datagridview中的数据。如何才能做到这一点?

1)我应该在Excel中写入数据集并在用户下载文件之前将其保存在服务器中?

2)我可以使用超级链接并将保存在服务器中的文件的path设置为超级链接hRef属性,以便用户可以单击并下载文件?

我正在使用C#ASP.net 2.0

请帮忙 !

不需要将文件保存到服务器使用下面的代码,将在飞行中创build文件:

Public Shared Sub DataTableToExcel(ByVal dt As DataTable, ByVal FileName As String HttpContext.Current.Response.Clear() HttpContext.Current.Response.Write(Environment.NewLine) For Each row As DataRow In dt.Rows For i As Integer = 0 To dt.Columns.Count - 1 HttpContext.Current.Response.Write(row(i).ToString().Replace(";", String.Empty) + ";") Next HttpContext.Current.Response.Write(Environment.NewLine) Next HttpContext.Current.Response.ContentType = "application/ms-excel" HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName + ".xls") HttpContext.Current.Response.[End]() End Sub 

你可以使用这个简单的代码来完成

 StringWriter sw = new StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); string attachment = "attachment; filename=SummaryReport" + DateTime.Now.ToString() + ".xls"; Response.ClearContent(); Response.AddHeader("content-disposition", attachment); Response.ContentType = "application/ms-excel"; grd.RenderControl(htw); Response.Write(sw.ToString()); Response.End(); 

SpreadsheetGear for .NET将做到这一点。

您可以在这里看到ASP.NET(C#和VB)示例,并在此处下载免费试用版。

免责声明:我自己的SpreadsheetGear LLC