Слияние писем на C# с n копиями

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
4 887
3

Ответы 3

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

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

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

Aspose.Word - отличный инструмент! Очень рекомендую!

Chris Canal 18.11.2008 14:33

Но за это надо платить. На? Я ищу бесплатную реализацию с использованием моего кода C#

Tim Sullivan 18.11.2008 14:39

Я не уверен, хотите ли вы запустить 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# - на самом деле это было бы ПРОЩЕ.

Другие вопросы по теме