ASp.NET:build议一个最佳选项,允许用户以Excel格式下载客户端数据网格中的数据

请build议最好的选项,以允许用户从excel格式的页面下载datagridView中的数据到客户端机器。

我有一个绑定到datagrid视图的数据集。即使它可以将数据集中的数据下载到客户端的excel。

PLeasebuild议是否可以生成一个excel并允许用户在客户端下载它?

我正在使用asp.net,C#,SQL服务器,Excel。

请帮忙 !

我build议你输出一个逗号分隔值(CSV)文件。 他们相对比较容易编写解决scheme,你可以直接写出来,而不需要进行互操作,而直接在Excel中打开。

可以使用MS Office Interop库对代码解决scheme进行编码。

以下是一些可以帮助您的例子:

http://www.codeproject.com/KB/office/datasettoexcel.aspx

http://www.eggheadcafe.com/articles/20050404.asp

http://support.microsoft.com/kb/319180

http://www.c-sharpcorner.com/UploadFile/Globalking/datasettoexcel02272006232336PM/datasettoexcel.aspx

这最后一个是真正漂亮的; 它只是将DataGrid转换为Excel电子表格… http://tim.mackey.ie/HowtoExportADatasetToExcelCAspnet.aspx

Excel可以将HTML表格直接读入电子表格。 您只需要发送相同的数据在网页中显示(除了超链接),其中Content-Disposition头设置为attachment并且合适的MIMEtypes导致客户端打开Excel。 Excel然后将下载的HTML读取到工作表中。

我们在几个应用程序中这样做。 这真的不难:我们使用相同的aspx页面(我们发送一个参数来表明我们需要一个由aspx生成的excel文件),只需几行代码即可将aspx生成为xls文件。

  1. Page_Load方法中的第一行代码应该是:

     //open as excell file Response.Buffer = true; Response.ContentType = "application/vnd.ms-excel"; string FileName = this.Page.ToString().Replace("ASP.", "") + ".xls"; // so the file can be saved as excel Response.AppendHeader("content-disposition", "filename=\"" + FileName + "\";attachment"); 
  2. 在这种模式下,确保禁用ViewState是非常重要的。 否则,它可能会完全混淆Excel并生成错误。

这就是我们所做的一切,它的function非常好。

我应该补充一点,微软的build议是将GridView导出到HtmlTextWriter中,以便确保生成的HTML是Excel能够理解的。 这很容易做(除了生成的exception,但很容易克服),并在这两篇文章中很好地解释: Gridview导出到Excel ,并广泛的研究GridView导出到Excel