Word テンプレートを読み取り、差し込み印刷機能を使用してそのコピーを n 個作成する C# プログラムを作成したいだけです。置き換えるデータは名前とアドレスであり、テンプレートの残りの部分は同じままにする必要があります。誰でもこれを行う方法を教えてもらえますか?
3 に答える
私はこれを Java で行いました - (壊れたリンク)ソース コードを使用したここでの作業例。
アイデアは次のとおりです。MS-Word を使用して、送信するドキュメントを設計および作成します。XML (Word-ML または新しい .docx 形式) として保存します。次に、テキスト エディターを使用して、ドキュメント内のフィールドをプレースホルダー タグ (名前を入力する場所は @@NAME、アドレスは @@ADDRESS など) に置き換えます。タグ名は重要ではありません。
次に、XSLT または単純な文字列ベースの置換関数を使用して置換ロジックを構築し、タグを実際のデータ値に繰り返し置換します。変更された各ドキュメントを保存します。
簡単です。
C# で同じ設計を使用することもできます - 実際にはもっと簡単です。
Aspose.Word を使用して、Word オブジェクト モデルを処理することができます。Office を (相互運用機能を使用するために) プログラムを実行する場所にインストールする必要はありません。私は Aspose.Word を使用して Word ドキュメントを生成しています。
Aspose へのリンク: http://www.aspose.com/categories/file-format-components/aspose.words-for-.net-and-java/default.aspx
そして、それはかなりまともに機能します:)
差し込み印刷を実行するのか、テンプレートをコピーするのかわかりません。C# についてはお手伝いできませんが、VBA のこのスニペットからアイデアが得られるかもしれません。
strDir = CurrentProject.Path
strMailmergeDataFilename = strDir & Format(Now, "yymmdd_hhnnss") & ".txt"
' Create CSV from database for use with mailmerge '
' This is a separate function that simply exports the sql '
' ExportSQLToCSV SQL, strMailmergeDataFilename '
'Open merge template '
Set objWordDoc = GetObject(strDir & MergeDocumentFilename, "Word.Document")
objWordDoc.Application.Visible = True
'Format:=0 ''0 = wdOpenFormatAuto'
'Add the data source '
objWordDoc.MailMerge.OpenDataSource _
Name:=strMailmergeDataFilename, ConfirmConversions:=False, _
ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
WritePasswordTemplate:="", Revert:=False, Format:=0, _
Connection:="", SQLStatement:="", SQLStatement1:=""
'Type some text at a bookmark, you could use .range property '
Selection.Goto What:=wdGoToBookmark, Name:="signaturetext"
Selection.TypeText Text:="You are here"
'Run mailmerge '
objWordDoc.MailMerge.Destination = 0 '0 = wdSendToNewDocument'
objWordDoc.MailMerge.Execute
objWordDoc.Application.ActiveDocument.PrintPreview