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





Вы можете использовать Aspose.Word для обработки объектной модели Word без необходимости устанавливать офис (для использования взаимодействия), где должна запускаться программа, я использую Aspose.Word для создания текстовых документов.
Ссылка на Aspose: http://www.aspose.com/categories/file-format-components/aspose.words-for-.net-and-java/default.aspx
И работает вполне прилично :)
Но за это надо платить. На? Я ищу бесплатную реализацию с использованием моего кода C#
Я не уверен, хотите ли вы запустить 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
Я сделал это на Java - (битая ссылка) рабочий пример здесь с исходным кодом.
Идея заключается в следующем: используйте MS-Word для разработки и создания документа, который вы хотите отправить. Сохраните его как XML (Word-ML или новый формат .docx). Затем с помощью текстового редактора замените поля в документе тегами-заполнителями, такими как @@ NAME, где должно идти имя, и @@ ADDRESS для адреса и т. д. Имена тегов не имеют значения.
Затем создайте логику замены - либо с помощью XSLT, либо даже с помощью простой строковой функции замены, и итеративно замените теги фактическими значениями данных. Сохраните каждый измененный документ.
Очень просто.
Вы можете использовать тот же дизайн в C# - на самом деле это было бы ПРОЩЕ.
Aspose.Word - отличный инструмент! Очень рекомендую!