Слияние почты в C # с n копий - PullRequest
0 голосов
/ 18 ноября 2008

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

Ответы [ 3 ]

1 голос
/ 26 февраля 2009

Я сделал это на Java - (неработающая ссылка) рабочий пример здесь с исходным кодом.

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

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

Легкий горох.

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

1 голос
/ 18 ноября 2008

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

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

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

0 голосов
/ 20 ноября 2008

Я не уверен, хотите ли вы запустить 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...