天天看点

C#操作Office2007

我用Microsoft.Office.Interop.Word.ApplicationClass 实例化word对象 myWordApp 当程序运行时只启动了word进程,但是页面就静止不动了运行不下去了。

我的程序如下:

object strFileName;

Object Nothing;

Microsoft.Office.Interop.Word.ApplicationClass myWordApp;

Document myWordDoc;

string strContent = "";

protected void Page_Load(object sender, EventArgs e)

{

createWord();

}

private void createWord()

{

strFileName = Request.PhysicalApplicationPath+"test.doc";

Object Nothing = System.Reflection.Missing.Value;

if (System.IO.File.Exists((string)strFileName2))

{

myWordDoc = myWordApp.Documents.Add(ref strFileName , ref Nothing, ref Nothing, ref Nothing);

}

}

程序就是运行到红色字体处就没有响应了,但是程序没有发生任何错误和异常。

需要重点说明的是我的程序是B/S,同样的程序在C/S下是可以正常运行的,而且我的dcom权限配置也没问题。

请教高手们怎么解决!!!!!!!

急!!!!!!!!!!!!!!!

另外我用myWordApp = (Microsoft.Office.Interop.Word.ApplicationClass) Microsoft.VisualBasic.Interaction.GetObject("", "Word.Application");

这个来实例化时报错如下:

无法将类型为“System.__ComObject”的 COM 对象强制转换为类类型“Microsoft.Office.Interop.Word.ApplicationClass”。进入 CLR 且不支持 IProvideClassInfo 或没有注册任何互操作程序集的 COM 组件都将包装在 __ComObject 类型中。这种类型的实例不能强制转换为任何其他类;不过,只要基础 COM 组件支持对接口 IID 的 QueryInterface 调用,就能将这些实例强制转换为接口。

设置microsoft word 的访问权限操作

在运行里面输入dcomcnfg 命令,弹出组件服务窗口,在组建服务-〉计算机-〉我的电脑-〉dcom配置中找到 Microsoft word 文档项,点右键选择属性如下图所示:

点击"标识"标签,选择"交互式用户"

点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加一个"NETWORK SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限。

依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK SERVICE"用户,然后赋予"本地访问"权限。

这样,我们便配置好了相应的Excel的DCOM权限。

注意:我是在WIN2003上配置的,在2000上,是配置ASPNET用户。

最后祝你安装成功!