帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > ASP编程
在ASP.NET中使用Microsoft Word文档
作者:佚名 发布时间:2005-04-02 来源:不详
   本文是应在ASP.NET里创建Microsoft Word文档之需而写的。这篇文章演示了在ASP.NET里怎么创建和修改Microsoft Word文档。   [背景]   自动化是一种能让各种语言编写的(如:Visual Basic.NET或C#)应用程序在程序级别上控制其他应用程序。   对于Word的自动化允许你执行诸如创建新的文档,向文档里添加文本,邮件合并和格式化文档这些操作。在Word和其他的Microsoft Office程序里,那些通过用户接口进行的可视化操作也可以通过程序级别的自动化来实现。   Word通过对象模型把这个程序可操作的功能向外提供了使用接口。   对象模型是一组类和方法的集合,这些类和方法与Word的逻辑组件构成对应。例如,他可能是应用程序对象,文档对象,段落对象,每一个对象都包含了Word组件的功能。   [建立工程]   在.NET里操作Word的第一步就是添加COM引用到你的工程里,通过右键点击Solution Explorer的Reference,Add Reference。选择COM选项卡,查找Microsoft Word 10.0 Object Library。点击选择,OK。   这将把封装有Word的COM的程序集自动的添加到应用程序目录里。   现在,你可以建立一个Word的实例了:   Word.ApplicationClass oWordApp = new Word.ApplicationClass();   你可以调用Word提供给你的方法和属性来操纵Word文档。   学习如何使用Word,office/9.shtml' target='_blank' class='article'>Excel,Powerpoint的对象模型最好的途径就是使用在这些Office应用里使用Macro Recorder:   1.在Tools菜单的Macro选项里选择 Record New Macro ,并且执行你有兴趣的任务。   2.在Tools菜单的Macro选项里选择 Stop Recording。   3.如果你进行了纪录,选择Tools菜单的Macro选项里的Macros,找到你记录的宏,你可以编辑它。   上面的操作产生了VBA代码来完成你记录的任务。需要注意的是,宏在大多数情况下不是最好的代码,但是它提供了一种便捷和可用的方法。   下面例子打开并添加一写文字:   object fileName = "c:databasetest.doc";   object readOnly = false;   object isVisible = true;   object missing = System.Reflection.Missing.Value;   Word.ApplicationClass oWordApp = new Word.ApplicationClass();     Word.Document oWordDoc = oWordApp.Documents.Open(ref fileName, ref missing,ref readOnly,   ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,   ref missing, ref missing, ref isVisible,ref missing,ref missing,ref missing);     oWordDoc.Activate();   oWordApp.Selection.TypeText("This is the text");   oWordApp.Selection.TypeParagraph();   oWordDoc.Save();     oWordApp.Application.Quit(ref missing, ref missing, ref missing);      如果创建一个新文档并保存是这样写的:    Word.ApplicationClass oWordApp = new Word.ApplicationClass();     Word.Document oWordDoc = oWordApp.Documents.Add(ref missing, ref missing,ref missing, ref missing);     oWordDoc.Activate();     oWordApp.Selection.TypeText("This is the text");   oWordApp.Selection.TypeParagraph();   oWordDoc.SaveAs("c:myfile.doc");     oWordApp.Application.Quit(ref missing, ref missing, ref missing);   在C#里,Word文档类的打开方法是这样定义的:Open(ref object, ref object, ref object, ref object, ref object, ref object, ref object, ref object, ref object, ref object, ref object, ref object, ref object, ref object, ref object)。在C#里的打开方法需要15个参数,并且每个参数必须被ref关键字所描述,而且是object类型。   第一个参数是文件,名,在Visual Basic.NET里通常是一个String,但是在在C#里,它必须是一个包含有String的object,代码是这样的:   object fileName = "c:databasetest.doc";      虽然我们仅需要使用Open方法的第一个参数,但是C#不允许使用默认参数,所以我们赋予它14个object类型的值:System.Reflection.Missing.Value     [使用模版]     如果你需要自动的建立有通用格式的文档,那你可以使用基于预格式化的摸版来建立新文档,这样可以方便很多。   在Word里使用摸版而不是建立空文档有两个明显的优点:     1.你可以更大程度的格式化文档和控制文档里的对象。   2.可以用较少的代码建立文档。      通过使用摸版,你可以调整表格、段落和其他一些在文档里的对象的位置,同时包括格式化这些对象。通过使用自动化处理,你可以建立一个基于摸版的文档,代码如下:     Word.ApplicationClass oWordApp = new Word.ApplicationClass();   object oTemplate = "c:MyTemplate.dot";   oWordDoc = oWordApp.Documents.Add(ref oTemplate, ref Missing,ref Missing, ref Missing);   在你使用的摸版里,你可以定义一些记号,自动化处理将向这些位置填充文本,如下:    object oBookMark = "MyBookmark";   oWordDoc.Bookmarks.Item(ref oBookMark).Range.Text = "Some Text Here";      使用摸版的另一个优点是你可以创建和保存那些在运行过程中你想要的格式化样式,如下:     object oStyleName = "MyStyle";   oWordDoc.Bookmarks.Item(ref oBookMark).Range.set_Style(ref oStyleName);      [使用CCWordApp类]   在工程中包含了CCWordApp.cs这个文件,我不想总是在写象插入文本,打开文档这样的代码。   所以,我决定把一些最重要的功能封装到CCWordApp类里去。   下面代码简要描述了这个类和他的功能:   public class CCWordApp   {   //it's a reference to the COM object of Microsoft Word Application   private Word.ApplicationClass oWordApplic;   // it's a reference to the document in use   private Word.Document oWordDoc;      // Activate the interface with the COM object of Microsoft Word   public CCWordApp();     // Open an existing file or open a new file based on a template   public void Open( string strFileName);     // Open a new document   public void Open( );     // Deactivate the interface with the COM object of Microsoft Word   public void Quit( );     // Save the document   public void Save( );     //Save the document with a new name as HTML document   public void SaveAs(string strFileName );     // Save the document in HTML format   public void SaveAsHtml(string strFileName );   // Insert Text   public void InsertText( string strText);   // Insert Line Break   public void InsertLineBreak( );   // Insert multiple Line Break   public void InsertLineBreak( int nline);   // Set the paragraph alignment   // Possible values of strType :"Centre", "Right", "Left", "Justify"   public void SetAlignment(string strType );   // Set the font style   // Possible values of strType :"Bold","Italic,"Underlined"   public void SetFont( string strType );   // Disable all the style   public void SetFont( );   // Set the font name   public void SetFontName( string strType );   // Set the font dimension   public void SetFontSize( int nSize );   // Insert a page break   public void InsertPagebreak();   // Go to a predefined bookmark   public void GotoBookMark( string strBookMarkName);   // Go to the end of document   public void GoToTheEnd( );   // Go to the beginning of document   public void GoToTheBeginning( );   打开一个存在的文件的代码将是这样的:   CCWordApp test ;   test = new CCWordApp();   test.Open ("c:databasetest.doc");   test.InsertText("This is the text");   test.InsertLineBreak;   test.Save ();   test.Quit();   [细节]     演示工程包含:   CCWordApp.cs - 上面使用的类   CreateDocModel.aspx - 建立基于使用书签的摸版的新文档的例子。   CreateNewDoc.aspx - 建立新文档,并向其中添加一写文本。   ModifyDocument.aspx - 打开一个存在的文档,并在末尾追加一些文本。   templatetemplate1.dot - 摸版的例子(在CreateDocModel.aspx中使用到)   注意你用来保存文档的目录,应该是可重写的。   可以在 Web.config 里修改这个路径。
  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·在ASP中常见的错误80004005信息和  (2005-03-12)
 ·为何我在asp程序内使用msgbox,程  (2005-03-12)
 ·在ASP应用中如何限制同一表单被多  (2005-03-12)
 ·能不能在ASP中实现对服务器上执行  (2005-03-12)
 ·在asp聊天室里实现房间功能和用户  (2005-03-12)
 ·在ASP处理程序时,进度显示  (2005-03-12)
 ·在Asp中使用存储过程  (2005-03-12)
 ·关于ASP程序中日期型数据的格式问  (2005-03-12)
 ·chart组件在ASP中的应用  (2005-03-12)
 ·浅谈MsChart在ASP中的应用  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·在ASP中使用数据库
·使用ASP脚本技术
·通过启动脚本来感受ASP的力量
·学习使用ASP对象和组件
·解析asp的脚本语言
·初看ASP-针对初学者
·ASP开发10条经验总结
·ASP之对象总结
·ASP与数据库应用(给初学者)
·关于学习ASP和编程的28个观点
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统