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

时间:2010-04-08 09:18:39

标签: c# asp.net excel

我有以下数据

AAAAAA
BBBBBB
CCCCCC
DDDDDD
EEEEEE

现在页面上有一个按钮,当我点击按钮时,浏览器会下载包含上述数据的Excel文件,并保留在当前页面上。有没有简单的方法呢?数据非常简单。只有一列,而不是巨大的。

最诚挚的问候,

5 个答案:

答案 0 :(得分:7)

您可以将数据直接写入响应流。将mime类型设置为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()

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

不建议在服务器上自动执行excel,最简单的方法是使用字符串构建器创建所需的输出,然后将其写入HttpResponse,将内容类型设置为“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();

答案 3 :(得分:0)

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

这意味着您必须在服务器上安装excel,以便其他解决方案可能更好。

答案 4 :(得分:0)

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

非常简单,并给出正确的Excel格式。