我有以下数据
AAAAAA
BBBBBB
CCCCCC
DDDDDD
EEEEEE
现在页面上有一个按钮,当我点击按钮时,浏览器会下载包含上述数据的Excel文件,并保留在当前页面上。有没有简单的方法呢?数据非常简单。只有一列,而不是巨大的。
最诚挚的问候,
答案 0 :(得分:7)
您可以将数据直接写入响应流。将mime类型设置为excel并将数据写为:
如果您想使用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格式。