C# 导出Word报”无法打开Office open xml文件。因为文件内容有错误“ 解决方法

来源:互联网 发布:汉王电子白板软件下载 编辑:程序博客网 时间:2024/04/30 15:26

  • 郁闷了一天终于搞定这个问题了,出现这个问题时候文件其实内容还是可以打开的,就是出现以上的错误原因。经过最终分析确定了具体原因,是因为在Response下载文档时候,最后需要结束

System.Web.HttpContext.Current.Response.End();否则默认为不完整下载状态。反正我加上去后就不出现以上情况了。具体代码如下:


/// <summary>  /// 下载文件/// </summary>  public void LoadPaperTemplate(string mStrFileName)  {      FileStream fs = null;      BinaryReader br = null;      BinaryWriter brnew = null;      try      {          //给内容赋值             string path = System.Web.HttpContext.Current.Server.MapPath("~/Template");          string mStrFileRoot = string.Format("{0}\\{1}", path, mStrFileName);          if (File.Exists(mStrFileRoot))          {              fs = new System.IO.FileStream(mStrFileRoot, System.IO.FileMode.Open);              br = new BinaryReader((Stream)fs);              byte[] bytes = br.ReadBytes((Int32)fs.Length);              brnew = new BinaryWriter(fs);              brnew.Write(bytes, 0, bytes.Length);              System.Web.HttpContext.Current.Response.Clear();              System.Web.HttpContext.Current.Response.Buffer = true;              System.Web.HttpContext.Current.Response.Charset = "GB2312";              System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;  filename=" + HttpUtility.UrlEncode(mStrFileRoot.Substring(mStrFileRoot.LastIndexOf('\\') + 1)));              System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");              System.Web.HttpContext.Current.Response.ContentType = "application/ms-word";              System.Web.HttpContext.Current.Response.BinaryWrite(bytes);              System.Web.HttpContext.Current.Response.Flush();              System.Web.HttpContext.Current.Response.End();          }      }      catch (Exception)      {          //throw;      }      finally      {          br.Close();          brnew.Close();          fs.Close();      }  }



转载地址:http://www.cnblogs.com/BeyondWJsel/archive/2012/05/10/2494418.html