ASP.NET里创建Microsoft Word文档

原文发布时间为:2008-08-03 —— 来源于本人的百度文章 [由搬家工具导入]

本文是应在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,Excel,Powerpoint的对象模型最好的途径就是使用在这些Office应用里使用Macro Recorder:

     1.在Tools菜单的Macro选项里选择 Record New Macro ,并且执行你有兴趣的任务。
     2.在Tools菜单的Macro选项里选择 Stop Recording。
     3.如果你进行了纪录,选择Tools菜单的Macro选项里的Macros,找到你记录的宏,你可以编辑它。

     上面的操作产生了VBA代码来完成你记录的任务。需要注意的是,宏在大多数情况下不是最好的代码,但是它提供了一种便捷和可用的方法。
     下面例子打开并添加一写文字:

     object fileName = "c:\\database\\test.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:\\database\\test.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:\\database\\test.doc");
     test.InsertText("This is the text");
     test.InsertLineBreak;
     test.Save ();
     test.Quit();

时间: 2024-10-06 18:47:59

ASP.NET里创建Microsoft Word文档的相关文章

新建Microsoft Word文档

问题描述 L正在出题,新建了一个word文档,想不好取什么名字,身旁一人惊问:“你出的题目叫<新建Microsoft Word文档>吗?”,L大喜,一拍桌子,说:“好,就叫这个名字了.” 仔细观察,当你新建一个word文档时,会得到一个名为“新建 Microsoft Word 文档.doc”的文件,再新建一个,则名为“新建 Microsoft Word 文档(2).doc”,再新建,便是“新建 Microsoft Word 文档(3).doc”.不断新建,编号不断递增.倘若你现在新建了三个文档

asp.net 实现在线浏览word文档(word转html)

最近在做word文档在线浏览,找了种种方法.控件之后,回归到word转HTML,在线浏览.... 一下是后台代码,前台html页面默认代码即可. 因为用文件如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using Word =

python创建一个word文档并写入内容

import docxdoc2=docx.Document()#创建一个Document对象doc2.add_paragraph('time')#增加一个paragraph#插入有序列表,段落的前面会有序号123doc2.add_paragraph('把冰箱门打开',style='List Number')doc2.add_paragraph('把大象装进去',style='List Number')doc2.add_paragraph('把冰箱门关上',style='List Number')

在 Microsoft Word 文档 中粘贴代码实现语法高亮的方法

1.下载notepad++. 2.将代码粘贴进notepad++,或者直接用notepad++打开. 3.点击顶栏 ===> 插件 ===> NppExport ===> cope HTML to clipboard. 4.然后在word中直接ctrl+v即可实现高亮.

算法提高 新建Microsoft Word文档

1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string> 5 using namespace std; 6 const char s2[15] ="Successful"; 7 const char s3[15] ="Failed"; 8 int main() 9 { 10 int s[3000],n,ans; 11 c

asp.net页面读取word文档内容显示

用asp.net实现对指定word文档内容的读取显示该如何实现?比如左边读取指定文件夹中所有的word文档,以文档的标题作为链接,点击文档标题则在右边某位置显示出该word文档中的内容(包括字体样式,图片显示等). 可以这样实现: 操作WORD配置说明 引入:Word的对象库文件“MSWORD.OLB”(word 2000为MSWORD9.OLB) 1.运行Dcomcnfg.exe 2.组件服务――计算机――我的电脑――DCOM配置――找到microsoft word 文档 3.点击属性 4.选

asp.net生成word文档服务器配置

一.asp.net生成word文档,布署到正式的服务器上就出现           错误:System.Runtime.InteropServices.COMException (0x800A1098): 因为没有打开的文档,所以这一命令无效,就是thisApplication.Documents.Add的时候打不开或者创建不了word文档.            经过网络工程师交流后才把问题解决了.     解决方案:Windows Server 2008的安全性造成的,在Microsoft 

ASP.NET生成WORD文档,服务器部署注意事项

网上转的,留查备用,我服务器装的office2007所以修改的是Microsoft Office word97 - 2003 文档这一个. ASP.NET生成WORD文档服务器部署注意事项 1.Asp.net 2.0在配置Microsoft Excel.Microsoft Word应用程序权限时 error: 80070005 和8000401a 的解决总   2007-11-01 11:30  检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-00000

.NET通过调用Office组件导出Word文档

.NET通过调用Office组件导出Word文档 最近做项目需要实现一个客户端下载word表格的功能,该功能是用户点击"下载表格",服务端将该用户的数据查询出来并生成数据到Word模板中,再反馈给客户端下载. 实现思路如下: 利用微软提供的Office的组件来完成,在服务器端指定目录放置一个word模板(该模板中需要替换的数据信息用书签标记好),当请求过来的时候,读取模板信息并将书签内容替换成从数据库获得的信息在返回给客户端下载即可,代码如下: #region 根据申请单ID号和模板生