您的位置:首页 > 编程语言 > C#

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

2012-05-10 15:24 1246 查看
郁闷了一天终于搞定这个问题了,出现这个问题时候文件其实内容还是可以打开的,就是出现以上的错误原因。经过最终分析确定了具体原因,是因为在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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐