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

时间:2009-08-18 04:31:33

标签: c# excel asp.net-2.0

请建议最佳选项,允许用户将数据网格视图中的数据从excel格式的页面下载到客户端计算机。

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

请问是否可以生成excel并允许用户在客户端下载?

我使用的是asp.Net,C#,SQL server,Excel。

请帮忙!

4 个答案:

答案 0 :(得分:2)

我建议您输出逗号分隔值(CSV)文件。它们编写解决方案相对容易,您可以直接编写它们而无需互操作,并且可以直接在Excel中打开。

答案 1 :(得分:1)

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

以下是一些可能对您有所帮助的示例:

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

答案 2 :(得分:1)

Excel可以直接将HTML表格读入电子表格。您只需要向网页中显示相同的数据(减去例如超链接),并将Content-Disposition标头设置为attachment,并使用合适的mime类型,使客户端打开Excel。然后Excel将下载的HTML读入工作表。

答案 3 :(得分:1)

我们在一些应用程序中这样做。这真的不难: 我们使用相同的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并产生错误。

  3. 这就是我们所做的一切,而且效果非常好。

    我应该补充一点,Microsoft的建议是在将GridView导出到Excel时将GridView写入HtmlTextWriter,以确保生成的HTML是Excel能够理解的。它很容易做到(除了生成的异常,但很容易克服),并在这两篇文章中得到了很好的解释: Gridview Export to ExcelExtensive Study of GridView Export to Excel