从ASP.NET导出数据为Excel文件

我有像下面的数据

AAAAAA BBBBBB CCCCCC DDDDDD EEEEEE 

现在页面上有一个button,当我点击button时,浏览器将下载一个带有上述数据的Excel文件,并保留在当前页面上。 有没有简单的方法来做到这一点? 数据非常简单。 只有一列,并不是很大。

最好的祝福,

您可以直接将数据写出到响应stream。 将mimetypes设置为excel并将数据写出为:

  • HTML
  • CSV
  • 电子表格XML
  • OOXML(.xlsx)

如果你想使用OOXML,那么就有Simple OOXML这样的库。 请注意,这是.xlsx格式。

以下代码设置.xls文件所需的标头

 'Send response with content type to display as MS Excel context.Response.Clear() context.Response.Buffer = True context.Response.AddHeader("content-disposition", String.Format( "attachment;filename={0}", fileName)) context.Response.ContentEncoding = Encoding.UTF8 context.Response.Cache.SetCacheability(HttpCacheability.Private) context.Response.ContentType = "application/vnd.ms-excel" 'Write to response context.Response.Write("csv,data,goes,here") context.Response.End() 

是的,您可以将信息导出为csv文件,并为其指定Excel文件扩展名。 Excel将识别它不是本机Excel格式,并允许导入警告消息。 对于下载,您可以使用ASP.NET中的自定义MIMEtypes在Internet上search常规文件下载。

由于警告信息,上述不是首选的方式。 您也可以使用库来生成本机Excel文件。 我在过去的项目中成功地使用了Aspose.Cells。

不build议您在服务器上自动执行excel,最简单的方法是使用string生成器创build所需的输出,然后将其写入HttpResponse,将内容types设置为“text / csv”,并设置相应的标题信息。

虽然这不是严格的Excel文档,但用户下载文件时,如果安装了该文件,则会提示用户在Excel中打开该文件,或者使用其他基于电子表格的编辑器。

以下片段应该让你去:

 string docName = "MyExcelDoc" StringBuilder sb = new StringBuilder(); sb.AppendLine("AAAAAA"); sb.AppendLine("BBBBBB"); context.Response.ClearContent(); context.Response.ContentType = "text/csv"; context.Response.AddHeader("content-disposition", "attachment; filename=" + docName + ".csv"); context.Response.Write(sb.ToString()); context.Response.Flush(); 

上述解决scheme的替代方法是挂接到Excel COM对象并使用其API生成电子表格。

这意味着你将不得不在服务器上安装excel,所以其他解决scheme可能会更好。

NPOI是一个开源项目,可以帮助您读取/写入xls,doc,ppt文件。

很简单,并给予正确的Excel格式。