我想在asp.net中以.xls和.xlsx格式将数据导出为excel MVC不使用任何第三方控件。
我尝试使用以下代码,但它不支持.xlsx格式。
Response.AddHeader("Content-Disposition", "attachment;
filename=test.xlsx");
Response.ContentType = "application/ms-excel";
Response.Write(sw.ToString());
Response.End();
请给我解决方案。
答案 0 :(得分:2)
对于你的台词也许这项工作,但我不确定你想做什么。
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Response.AppendHeader("Content-Disposition", "attachment; filename=test.xlsx")
Response.Write(sw.ToString())
Response.End()
答案 1 :(得分:1)
您应该使用Open XML SDK 2.0来完成该任务,因为它是Microsoft支持的创建Office文档的方式。
另一种hacky方式是创建局部视图并将html导出到Excel。这将给出数据的只读视图,因为它不是正确的excel格式,但是当你不想花时间编写Open XML时就可以工作。
.xlsx的正确MIMEConentType为"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
,而.xls为"application/vnd.ms-excel"
答案 2 :(得分:1)
除了@amurra描述的Open XML SDK 2.0之外,您还可以尝试OpenExcel。这是一个很棒的图书馆,速度很快。
一个快速而又脏的选项是将所有数据放在一个表中,并将该表只写入您正在尝试的标题的响应流,例如:
Response.AddHeader("Content-Disposition", "attachment; filename=test.xlsx");
Response.ContentType = "application/ms-excel";
//NOW WRITE TABLE
Response.Write("<table><tr><td>SrNo</td></tr><tr><td>1</td></tr></table>");
Response.End();
我没有使用过这个hack,但已经看到它在某些应用程序中使用过。打开时,Excel会向用户发出警告,指出数据不是excel格式,而是成功打开它。