ASPからNETがMicrosoft Wordドキュメントのコードを入手

7529 ワード

背景
自動化(Automation)は、Visual Basicのようなプログラミング言語を可能にするプロセスです.NETまたはC#で書かれたアプリケーションは、他のアプリケーションをプログラミング制御することができます.Wordへの自動化により、新しいドキュメントの作成、ドキュメントへのテキストの追加、メールのマージ、ドキュメントのフォーマットの制御などの操作を実行できます.Wordやその他のMicrosoft Officeアプリケーションを使用すると、ユーザーパネルで手動で実現できる操作のほとんどが自動プログラミングで実現できます.Wordはオブジェクトモデルによってこのプログラミング機能(programmatically functionality)を実現する.オブジェクトモデルは、Wordの論理コンポーネントに似たサービスを提供する一連のクラスと方法です.たとえば、1つのアプリケーションオブジェクト、1つのドキュメントオブジェクト、および1つの段落オブジェクトは、Wordの対応するコンポーネントの機能性を含んでいます.
プロジェクト
はい.NETでWordを操作する最初のステップは、ソリューションウィンドウのリファレンス->リファレンスの追加を右クリックして、プロジェクトにCOMリファレンスを追加する必要があります.COMタグをクリックしてMicrosoft Word 10.0 Object Libraryを探します.[選択]をクリックして追加し、[OK]をクリックして戻ります.
これにより、アプリケーションフォルダにプログラムセット(assembly)が自動的に配置され、COMインタフェースがWordに割り当てられます.
これで、Wordアプリケーションのインスタンスを生成できます.
Word.ApplicationClass oWordApp = new Word.ApplicationClass();
Microsoft Wordが提供する興味深い方法と属性を呼び出して、Word形式のドキュメントを操作することができます.Word、Excel、PowerPointオブジェクトモデルを操作する方法を学ぶには、これらのOfficeアプリケーションでマクロレコーダを使用することが最善です.
1、[ツール](Tools)メニューの[マクロ](Macro)オプションで[新しいマクロを記録](Record New Macro)を選択し、興味のあるタスクを実行します.
2、[ツール](Tools)メニューの[マクロ](Macro)オプションで[記録を停止](Stop Record)を選択します.
3、録画が完了したら、「ツール」メニューの「マクロ」オプションの「マクロ」を選択し、録画したマクロを選択し、「編集」をクリックします.
これにより、生成されたVBAコードに持ち込まれ、これらのコードは記録されたタスクを完了します.記録されたマクロは、多くの場合、最良のコードではないが、迅速かつ利用可能な例を提供することに注意してください.
たとえば、存在するファイルを開いてテキストを追加します.
 
  
object fileName = "c:\\database\\test.doc";
object;
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メソッドは、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,ref object)と定義されます.これは、C#のOpenメソッドが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オートメーションクライアントプログラムでテンプレートを使用するのは、テンプレートを使用しないのと比較して、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";
テンプレートを使用するもう1つの利点は、実行時に適用したいストレージフォーマットスタイルを作成できることです.次のようにします.
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();
詳細
サンプルアイテムは次のとおりです.
CCWordApp.cs - the class
CreateDocModel.aspx:テンプレートベースのドキュメントを作成し、ブックマークを使用する例.
CreateNewDoc.aspx:ドキュメントを作成し、いくつかのテキストを挿入する例.
ModifyDocument.aspx:既存のドキュメントを開き、後でテキストの例を追加します.
template\template1.dot:テンプレートの例(CreateDocModel.aspxで使用).
ファイルを保存するディレクトリは書き込み可能でなければならないことを覚えておいてください.Webをご覧ください.configファイルでパスを変更します.
参照
Microsoft Word Objects
Converting Microsoft Office VBA Macros to Visual Basic .NET and C#
HOWTO: Automate Microsoft Word to Perform a Mail Merge from Visual Basic .NET
A Primer to the Office XP Primary Interop Assemblies
HOWTO: Find and Use Office Object Model Documentation
Creating and Opening Microsoft Word Documents from .NET using C#