请建议最佳选项,允许用户将数据网格视图中的数据从excel格式的页面下载到客户端计算机。
我有一个绑定到datagrid视图的数据集。即使它可以将数据集中的数据下载到客户端的excel中。
请问是否可以生成excel并允许用户在客户端下载?
我使用的是asp.Net,C#,SQL server,Excel。
请帮忙!
答案 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
这最后一个真的很漂亮;它只是将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文件。
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");
在此模式下,确保禁用ViewState非常重要。否则,它可能会完全混淆Excel并产生错误。
这就是我们所做的一切,而且效果非常好。
我应该补充一点,Microsoft的建议是在将GridView导出到Excel时将GridView写入HtmlTextWriter,以确保生成的HTML是Excel能够理解的。它很容易做到(除了生成的异常,但很容易克服),并在这两篇文章中得到了很好的解释: Gridview Export to Excel和Extensive Study of GridView Export to Excel