程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 在C#中利用自動化模型操縱Word

在C#中利用自動化模型操縱Word

編輯:關於C語言

說明:這篇文章是很早以前寫的了,原本是用自動化模型在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);

}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved