ErBhati Ответов: 0

Слияние почты с использованием шаблона в C# и MVC


Я работаю на платформе .net MVC. Я создал шаблон word (. dotx) и добавил в него поля слияния. Я заменяю поле слияния из значений столбцов базы данных. Теперь я хочу сделать цикл на поле слияния. например: - у меня есть поля слияния с именами < DepartmentID > и < DepartmentName & gt; . И я получаю данные из таблицы базы данных с именем "tblDepartment", которая имеет два столбца" DepID "и"DepName". эта таблица имеет 5 строк. я хочу зациклиться на этих слияниях.

я хочу показать такой файл. прежде чем выполнить docx это :- &ЛТ; столбец DepartmentID &ГТ; &ЛТ; Кафедраимя &ГТ;

после выполнения кода:-
DepID             DepName
  1                 DotNet

  2                 Java

  3                 PHP


Что я уже пробовал:

вот ИД мой код:
public void Mail_Merge()
       {
           try
           {
               Application wordApp = new Application();

               Document doc = new Document();
               Object oMissing = System.Reflection.Missing.Value;

               Object oTemplatePath = "D:\\Letter_Template.dotx";
               for (int i = 0; i < 3; i++)
               {
                   Document wordDoc = new Document();

                   wordDoc = wordApp.Documents.Add(ref oTemplatePath, ref oMissing, ref oMissing, ref oMissing);

                   foreach (Field myMergeField in wordDoc.Fields)
                   {

                       Range rngFieldCode = myMergeField.Code;
                       String fieldText = rngFieldCode.Text;


                       // ONLY GETTING THE MAILMERGE FIELDS

                       if (fieldText.StartsWith(" MERGEFIELD"))
                       {

                           // THE TEXT COMES IN THE FORMAT OF

                           // MERGEFIELD  MyFieldName  \\* MERGEFORMAT

                           // THIS HAS TO BE EDITED TO GET ONLY THE FIELDNAME "MyFieldName"

                           Int32 endMerge = fieldText.IndexOf("\\");

                           Int32 fieldNameLength = fieldText.Length - endMerge;

                           String fieldName = fieldText.Substring(11, endMerge - 11);

                           // GIVES THE FIELDNAMES AS THE USER HAD ENTERED IN .dot FILE

                           fieldName = fieldName.Trim();

                           // **** FIELD REPLACEMENT IMPLEMENTATION GOES HERE ****//

                           // THE PROGRAMMER CAN HAVE HIS OWN IMPLEMENTATIONS HERE
                           if (fieldName == "Address")
                           {
                               if (i == 0)
                               {
                                   myMergeField.Select();
                                   wordApp.Selection.TypeText("Ram Debey");
                               }
                               else if (i == 1)
                               {
                                   myMergeField.Select();
                                   wordApp.Selection.TypeText("Mukesh Mahapatra");
                               }
                               else
                               {
                                   myMergeField.Select();
                                   wordApp.Selection.TypeText("Inamul Afridi");
                               }

                           }
                       }
                   }
               }
               wordApp.ActiveDocument.SaveAs("D:\\MergeLetter.doc", ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
               ref oMissing, ref oMissing, ref oMissing, ref oMissing);
               wordApp.ActiveDocument.Close(ref oMissing, ref oMissing, ref oMissing);
               // wordApp.Documents.Open("myFile.doc");
               wordApp.Application.Quit();
           }
           catch(Exception ex)
           {

           }
       }

Richard Deeming

Вы должны прочитать следующую статью базы знаний Microsoft:

Соображения по автоматизации работы офиса на стороне сервера[^]
В настоящее время корпорация Майкрософт не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любого автоматического, неинтерактивного клиентского приложения или компонента (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может демонстрировать нестабильное поведение и / или взаимоблокировку при запуске Office в этой среде.

Jewel-Davis

Я бы рекомендовал вам проверить это эти примеры слияния почты сделаны в .NET. В примерах используется Библиотека .NET для документов Word это безопасно использовать и на стороне сервера.

0 Ответов