MVC并导出到Excel

时间:2012-04-03 11:01:57

标签: c# asp.net-mvc excel

说明

我在MVC中尝试了以下代码并收到“当使用自定义TextWriter时,OutputStream不可用。”。我按照URL http://blog.maartenballiauw.be/post/2008/05/ASPNET-MVC-custom-ActionResult.aspx中给出的解决方案。但我的问题没有解决。

请帮我解决这个问题..

代码:

string json = e.ExtraParams["GridData"].ToString();
StoreSubmitDataEventArgs eSubmit = new StoreSubmitDataEventArgs(json, null);
XmlNode xml = eSubmit.Xml;       

this.Response.Clear();
this.Response.ContentType = "application/vnd.ms-excel";
this.Response.AddHeader("Content-Disposition", "attachment;     
filename=submittedData.xls");
XslCompiledTransform xtExcel = new XslCompiledTransform();       
xtExcel.Load(Server.MapPath("Excel/XSLStyleSheet/Example2.xsl"));
xtExcel.Transform(xml, null, this.Response.OutputStream);
this.Response.End();

错误:

'/'应用程序中的服务器错误。

使用自定义TextWriter时,OutputStream不可用。 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。

  

异常详细信息:System.Web.HttpException:使用自定义TextWriter时,OutputStream不可用。

来源错误:

  

第85行:XslCompiledTransform xtExcel = new XslCompiledTransform();
  第86行:xtExcel.Load(Server.MapPath(“Excel / XSLStyleSheet / Example2.xsl”));
  第87行:xtExcel.Transform(xml,null,this.Response.OutputStream); < ============== ERROR LINE
  第88行:this.Response.End();
  第89行:}

2 个答案:

答案 0 :(得分:1)

@ Khalid的建议很好。如果你真的想写入Excel XML,那么我可以用ClosedXML library来做好结果。

答案 1 :(得分:0)

这可能听起来像一个简单的解决方案,但为什么不将数据输出为CSV格式。 Excel在打开CSV电子表格时没有任何问题。