說明:這篇文章是很早以前寫的了,原本是用自動化模型在C# 中開發Word程序,現在自然可以用插件或智能文檔的形式開發,但是Word的一些編程模型大體是一樣的。所以也就不怕寫得簡單,拿出來供大家作個參考了。
在C#中利用自動化模型操縱Word
一. 引入程序集
在工程中加入引用Interop.Word
二. 生成Word對象
定義Word對象
Word.ApplicationClass app=null;
打開Word對象
if(app==null)
app=new Word.ApplicationClass();
顯示Word應用程序
if(app!=null)
app.Visible=ture;
關閉並保存Word對象
object SaveOption,OriginalFormat,RouteDocument;
SaveOption=Word.WdSaveOptions.wdPromptToSaveChanges;
OriginalFormat=Word.WdOriginalFormat.wdPromptUser;
RouteDocument=Missing.Value;
if(app!=null)
{
app.Quit(ref SaveOption,ref OriginalFormat,ref RouteDocument);
app=null;
}
關閉並保存Word對象的資料如下:
Application.Quit
退出 Microsoft Word,並可選擇保存或傳送打開的文檔。
expression.Quit(SaveChanges, Format, RouteDocument)
expression 必需。該表達式返回一個 Application 對象。
SaveChanges Variant 類型,可選。指定退出 Word 前是否保存修改過的文檔。可以是下列 WdSaveOptions 常量之一。
WdSaveOptions 可以是下列 WdSaveOptions 常量之一:
wdDoNotSaveChanges
wdPromptToSaveChanges
wdSaveChanges
OriginalFormat Variant 類型,可選。指定 Word 對文檔的保存方式(該文檔的原始格式並非是 Word 文檔格式)。可以是下列 WdOriginalFormat 常量之一。
WdOriginalFormat 可以是下列 WdOriginalFormat 常量之一:
wdOriginalDocumentFormat
wdPromptUser
wdWordDocument
RouteDocument Variant 類型,可選。如果為 True,則將文檔傳送給下一個收件人。如果文檔沒有附加的傳送名單,則忽略該參數。
新增文檔
if(app!=null)
{
object template,newTemplate,docType,visible;
template=newTemplate=docType=visible=Missing.Value;
Word.Document document=app.Documents.Add(
ref template,ref newTemplate,ref docType,ref visible);
}
Documents.Add
返回一個 Document 對象,該對象表示添加至打開的文檔集合中的新建空文檔。
expression.Add(Template, NewTemplate, DocumentType, Visible)
expression 必需。該表達式返回一個 Documents 對象。
Template Variant 類型,可選。新文檔使用的模板名。如果忽略此參數,則使用 Normal 模板。
NewTemplate Variant 類型,可選。如果為 True,則將文檔作為模板打開。默認值是 False。
DocumentType Variant 類型,可選。可以是下列 WdNewDocumentType 常量之一:wdNewBlankDocument、wdNewEmailMessage、wdNewFrameset 或 wdNewWebPage。默認值為 wdNewBlankDocument。
Visible Variant 類型,可選。值為 True 時,將在可見窗口中打開文檔。如果值為 False,則 Microsoft Word 會打開此文檔,但會將文檔窗口的 Visible 屬性設置為 False。默認值為 True。
在活動文檔的起始結尾位置處插入文本:
app.ActiveDocument.Words.First.InsertBefore(txt);
app.ActiveDocument.Words.Last.InsertAfter(txt);
Document.Words 屬性
該屬性返回一個 Words 集合,該集合代表區域、所選內容或文檔中的全部文字。只讀。
注釋 標點符號和段落標記也包括在 Words 集合中。
該對象為所選內容、區域或文檔中的單詞組成的集合。Words 集合中的每一項均為代表一個單詞的 Range 對象。不存在 Word 對象。
使用 Words 屬性可返回 Words 對象。下列示例顯示當前選定的單詞數。
MsgBox Selection.Words.Count & " Words are selected"
使用 Words(index) 可以返回代表一個單詞的 Range 對象,其中 index 為索引序號。索引序號表示單詞在 Words 集合中的位置。下列示例將所選內容中第一個單詞的格式設為 24 磅傾斜。
With Selection.Words(1)
.Italic = True
.Font.Size = 24
End With
說明
如果所選內容為插入點,且後面緊跟一個空格,則 Selection.Words(1) 指所選內容前面的單詞。如果所選的為插入點且後面緊跟一個字符,則 Selection.Words(1) 指所選內容後面的單詞。
文檔中該集合的 Count 屬性僅返回正文部分的項目數。若要計算其他部分的項目數,可使用 Range 對象的集合。Count 屬性的值同樣包括全部標點符號和段落標記。如果需要准確計算文檔中的單詞數,可使用“字數統計”對話框。下列示例檢索活動文檔中的單詞數並將該值賦給變量 numWords。
Words.First
返回一個 Range 對象,該對象代表文檔、選定內容或區域中的第一個句子、單詞或字符。
expression.First
expression 必需。該表達式返回以上的一個對象。
-----------------------------------------------------------------
Range.InsertBefore
在指定的選定內容或區域前插入指定文字。在插入文字之後擴展選定內容或區域,以包含新文字。如果選定內容或區域是書簽,則書簽也會擴展,以包含新文字。
expression.InsertBefore(Text)
expression 必需。該表達式返回一個 Range 或 Selection 對象。
Text String 類型,必需。要插入的文字。
說明
使用 Visual Basic Chr 函數和 InsertBefore 方法,可以插入引號、制表符和不間斷連字符等。還可以使用下列 Visual Basic 常量:vbCr、vbLf、vbCrLf 和 vbTab
獲得文檔中的字符數
app.ActiveDocument.Characters.Count
Document.Characters
由選定內容、區域或文檔中的字符所組成的集合。Characters 集合中的每個元素都是代表一個字符的 Range 對象,而不是字符對象。
使用 Characters 集合
用 Characters 屬性可返回 Characters 集合。下列示例顯示選定部分的字符數。
MsgBox Selection.Characters.Count & " characters are selected"
用 Characters(index) 可返回一個 Range 對象,該對象代表一個字符,其中 index 是索引序號。該索引序號指出了字符在 Characters 集中的位置。下列示例將選定內容的首字符設置為 24 磅的加粗格式。
With Selection.Characters(1)
.Bold = True
.Font.Size = 24
End With
說明
文檔中本集合的 Count 屬性返回主文字部分的項目數。要計算其他部分的項目數,請使用 Range 對象的集合。
對 Characters 集合不能使用 Add 方法,而是用 InsertAfter 或 InsertBefore 方法給 Range 對象添加字符。下列示例在活動文檔的首段之後插入一個新段落。
With ActiveDocument
.Paragraphs(1).Range.InsertParagraphAfter
.Paragraphs(2).Range.InsertBefore "New Text"
End Wit
選中並剪切文檔中的字符串
object f=1;
object l=5;
Word.Range range=app.ActiveDocument.Range(ref f,ref l);
range.Select();//選中
range.Cut();
Document.Range
通過使用指定的開始和結束字符位置,返回一個 Range 對象。
expression.Range(Start, End)
expression 必需。該表達式返回一個 Document 對象。
Start Variant 類型,可選。開始字符位置。
End Variant 類型,可選。結束字符位置。
--------------------------------------------------------------
Range.Select
選定指定的對象。
注釋 使用本方法之後,可用 Selection 屬性處理選定的項目。有關詳細信息,請參閱處理 Selection 對象。
expression.Select
expression 必需。該表達式返回以上一個對象。
---------------------------------------------------------------
Range.Cut
將指定對象從文檔中移到剪貼板上。
expression.Cut
expression 必需。該表達式返回一個 Field、FormField、Frame、MailMergeFIEld、PageNumber、Range 或 Selection 對象。
說明
如果 expression 返回 Range 或 Selection 對象,則將該對象中的內容剪切到剪貼板上,但是折疊的對象還保留在文檔中。
項目編號:
if(app!=null && app.Documents.Count!=0)
{
object i=1;
object listFormat=Word.WdDefaultListBehavior.wdWord10ListBehavior;
//Word.ListTemplates listTemps=app.ListGallerIEs[Word.WdListGalleryType.wdNumberGallery].ListTemplates;
//listTemps=app.ActiveDocument.ListTemplates.
Word.ListTemplate listTemp=app.ListGallerIEs[Word.WdListGalleryType.wdNumberGallery].
ListTemplates.get_Item(ref i);
object bContinuousPrev=true;
object applyTo=Missing.Value;
object defaultListBehaviour=Missing.Value;
Word.ListFormat format=app.ActiveDocument.Paragraphs[1].Range.ListFormat;
app.ActiveDocument.Paragraphs[1].Range.ListFormat.ApplyListTemplate(
listTemp,ref bContinuousPrev,
ref applyTo,
ref defaultListBehaviour
);
app.ActiveDocument.Paragraphs[2].Range.ListFormat.ApplyListTemplate(
listTemp,
ref bContinuousPrev,
ref applyTo,
ref defaultListBehaviour);
}