(转载)
Asp.net下C#自动化调用Word的实例与总结
摘要:本文通过一个实用例子完整演示了如何使用C#在ASP.
NET里调用Word、自动化Word,并且总结了实际应用中发现的
问题,最后提出了有效的解决
方案。
关键词:ASP.NET;C#;Word;自动化;
VBA;COM;死进程;
1.建立工程
在ASP.NET里操作Word的第一步就是添加COM引用到你的工程里,通过右键点击“解决方案资源管理器”的“引用”,添加引用。选择COM选项卡,添加MicrosoftWord12.0ObjectLib
rary(其中12.0是Word版本号,根据当前电脑上安装的Word版本确定)。ASP.Net会自动生成Word的COM包装类
程序集添加到应用程序目录里。
2.代码逻辑
在服务器端访问本地存在的Word文件,并根据他新建一个文件,利用Word的标签定位赋值。客户端浏览器通过文件链接访问到这个新生成的Word文件。
具体代码如下:
privatevoidPage_L
oad(objectsender,System.EventArgse)
{
//在此处放置用户代码以初始化页面
objectMissing=Type.Missing;
//取得Word文件路径
stringstrTemp=&;quot;
doc/test.doc&;quot;;
//新Word文件保存路径
stringnewFileName=&;quot;doc/test2.doc&;quot;;
//创建一个名为WordApp的组件对象
ApplicationWordApp=newApplicationClass();
//必须设置为不可见
WordApp.Visible=false;
try
{
//创建以strTemp为模板的
文档objectoTemplate=Server.MapPath(strTemp);
DocumentWordDoc=WordApp.Documents.Add(refoTemplate,refMissing,refMissing,refMissing);
WordDoc.Activate();
//对标签&;quot;Title&;quot;进行填充
stringstrBM=&;quot;Title&;quot;;
网易论坛,天天相伴
第1页
本文出自网易论坛作者:nebula747
objectobjBM=strBM;
if(WordApp.ActiveDocument.Bookmarks.Exists(strBM)==true)
{
WordApp.ActiveDocument.Bookmarks.get_Item(refobjBM).Select();
WordApp.Selection.TypeText(&;quot;公文标题&;quot;);
}
//保存为新文件
objectoNewFileName=Server.MapPath(newFileName);
WordDoc.SaveAs(refoNewFileName,refMissing,refMissing,refMissing,refMissing,refMissing,refMissing,
refMissing,refMissing,refMissing,refMissing,refMissing,refMissing,refMissing,refMissing,refMissing);
WordDoc.Close(refMissing,refMissing,refMissing);
WordApp.Quit(refMissing,refMissing,refMissing);
}
catch(ExceptionEx)
{
thrownewException(Ex.Message);
}
//浏览器弹出下载框
Page.RegisterStartupScript(&;quot;&;quot;,&;quot;&;lt;script&;gt;window.open(\'&;quot;+newFileName+&;quot;\')&;lt;/script&;gt;&;quot;);
}
运行前,工程目录下建文件夹doc,doc里新建一个test.doc,内容自己定,手动插入一个名为“Title”的标签。