繁体   English   中英

无法使用Interop打开Office文档

[英]Can't open Office document with Interop

码:

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”。 由于以下错误,此操作失败是因为在COM组件上针对具有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);

解决方法很简单:停止使用Interop,它是垃圾。 这很麻烦,需要花费大量的时间来处理文档,在可以处理文档之前先打开文档,有时根本无法正常工作,也无法告诉您原因,除非是这样做的时候,并且您遇到上述问题,而没人能提供帮助。

尽管MPXJ在.NET内实现Java,但它仍然比Interop更好!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM