从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格式。