2008-11-18 2 views
0

Я просто хочу создать программу на C#, которая будет читать шаблон слова и создать n количество его копий с функцией слияния. Данные для замены - это имя и адрес остальной части вещей в шаблоне должны оставаться неизменными. Может ли кто-нибудь сказать мне, как это сделать?Слияние почты в C# с n копиями

ответ

1

Вы можете использовать Aspose.Word для обработки объектной модели Word без необходимости устанавливать офис (чтобы использовать interop), где должна запускаться программа, я использую Aspose.Word для создания текстовых документов.

Ссылка на Aspose: http://www.aspose.com/categories/file-format-components/aspose.words-for-.net-and-java/default.aspx

И это работает вполне прилично :)

+0

Aspose.Word - это потрясающий инструмент! Очень рекомендую! – 2008-11-18 11:33:35

0

Я не уверен, хотите ли вы запустить MailMerge или скопировать шаблон. Я не могу помочь вам с 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 
1

Я сделал это в Java - (пунктирная ссылка) working example here с исходным кодом.

Вот эта идея: используйте MS-Word для проектирования и создания документа, который вы хотите отправить. Сохраните его как XML (либо Word-ML, либо новый формат .docx). Затем, используя текстовый редактор, замените поля в документе тегами-заполнителями, например @@ NAME, где должно быть имя, и @@ ADDRESS для адреса и т. Д. Имена тегов не имеют значения.

Затем создайте логику замены - либо с помощью XSLT, либо даже с простой функцией замены на основе строк, и итеративно замените теги фактическими значениями данных. Сохраните каждый измененный документ.

Легкий peasy.

Вы можете использовать ту же конструкцию в C# - на самом деле это было бы EASIER.

Смежные вопросы