从 C# 错误打开 Office 2010 文档
Posted
技术标签:
【中文标题】从 C# 错误打开 Office 2010 文档【英文标题】:Opening Office 2010 documents from C# error 【发布时间】:2012-02-11 14:26:20 【问题描述】:我正在尝试通过
为用户加载办公文档HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
HttpContext.Current.Response.ContentType = MIMETypesDictionary[fileExt];
HttpContext.Current.Response.BinaryWrite(fileArray);
我的 MIMETypesDictionary 有这个(缩写)
private static readonly Dictionary<string, string> MIMETypesDictionary = new Dictionary<string, string>
"doc", "application/msword",
"docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
...
"xls", "application/vnd.ms-excel",
"xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
...
;
doc 和 xls 文件效果很好。客户端应用程序中的 Docx 和 xlsx 文件错误。
Excel 错误
Excel found unreadable content in 'filename.xlsx'. Do you want to recover the contents of this workfbook?
单词错误
The file filename.docx cannot be opened because there are problems with the contents.
如果我单击“是”,它会加载并且文档看起来还不错。这个错误当然不会为用户飞行。我是否为这些文件使用了正确的 mime 类型?我还尝试了 application/vnd.ms-word.document.12、application/vnd.ms-excel.12 和 application/octet-stream 并得到了相同的错误。
谢谢!
【问题讨论】:
您是否尝试过仅使用“application/octet-stream”作为内容类型。我刚刚为流文件写了一些东西,单独使用它就足够了 docx 文件。 【参考方案1】:解决了!必须构建响应代码
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
HttpContext.Current.Response.ContentType = MIMETypesDictionary[fileExt];
HttpContext.Current.Response.BinaryWrite(fileArray);
HttpContext.Current.Response.End();
HttpContext.Current.Response.Flush();
我保留了文件类型的八位字节流值,效果很好!
【讨论】:
以上是关于从 C# 错误打开 Office 2010 文档的主要内容,如果未能解决你的问题,请参考以下文章
word出现无法打开office open XML文件,因为内容有错误,该怎么办?
word出现无法打开office open XML文件,因为内容有错误,该怎么办?
你好,我的office也打不开文件,请求帮助。win7的office2007版打不开xlsx格式的文件,求助求助!!!