首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Interop打开Office文档

无法使用Interop打开Office文档
EN

Stack Overflow用户
提问于 2014-08-26 14:15:46
回答 1查看 668关注 0票数 1

代码:

代码语言:javascript
复制
ApplicationClass projectApp = new ApplicationClass();

if (projectApp.FileOpen(path, true, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
PjPoolOpen.pjDoNotOpenPool, Missing.Value, Missing.Value, Missing.Value, Missing.Value))
{
    projects = new List<Project>(projectApp.Projects.Cast<Project>());
    foreach (Project project in projects)
    {
        MSProjectProject msProject = new MSProjectProject();

        msProject.Author = project.Author.ToString(); // ERROR HERE
        msProject.Name = project.Name;
    }
}

异常:

无法将'Microsoft.Office.Interop.MSProject.ProjectClass‘类型的COM对象转换为接口类型'Microsoft.Office.Interop.MSProject._IProjectDoc'.此操作失败,因为对IID‘{00020B00-0000-0000-C000-000000000046}的接口的COM组件的QueryInterface调用失败,原因是以下错误: RPC服务器不可用。(HRESULT例外: 0x800706BA)

异常2: (此异常不会被try块捕获)

DisconnectedContext检测到 此RuntimeCallableWrapper转换到COM上下文0x265048失败,出现以下错误:请求的对象不存在。(HRESULT例外: 0x80010114)。这通常是因为创建此RuntimeCallableWrapper的COM上下文0x265048已断开连接,或者它忙于做其他事情,无法处理上下文转换。将不使用代理为COM组件上的请求提供服务,并且将直接调用COM组件。这可能会导致损坏或数据丢失。为了避免此问题,请确保所有COM上下文/单元/线程都保持活动状态,并可用于上下文转换,直到应用程序完全使用表示它们内部的COM组件的RuntimeCallableWrappers完成为止。

当我第一次访问project时,会抛出异常。我做错了什么?

而且,我还不熟悉Interop,当我访问一个文件时,它会与office一起打开,这让我感到困扰。难道没有办法只看它的内容而不打开它吗?

互操作运行时版本: v2.0.50727;

互操作版本: 14.0.0.0;

项目版本:2013年(15.0.4569.1504);

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-28 19:10:08

解析很简单:停止使用Interop,这是垃圾。这很麻烦,需要很长时间来处理文档,在文档处理之前打开文档,有时根本不工作,不告诉你原因,除非它确实存在,而且您遇到了上述问题,没有人能帮上忙。

虽然MPXJ在.NET中实现了.NET,但它仍然比.NET好!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25508047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档