Member 12608327 Ответов: 0

Поля слияния в документ Word через C#


Привет,

Я работаю над функциональностью слияния Почты. В этом случае я создал файл word с четырьмя таблицами. В трех таблицах мне нужно заполнить разные строки. В шаблоне word, который я создал, есть две строки, одна для заголовочной части и вторая для данных. Когда я получаю несколько строк, только данные первой строки заменяются в таблице. Я попытался создать необходимое для меня количество строк. Я мог бы создать их, но я не в состоянии скопировать "поля слияния почты" во вновь созданные строки.

Например: мой стол

firstName lastName gender => Это мой заголовок
«firstName» «lastName»» gender " => это строка для полей слияния почты

Кто-нибудь может мне помочь?

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

если (dtTemplateData.Строк.Граф > 0)
{
Microsoft.Офис.- Взаимодействия.Слово._Document document = новый Microsoft.Офис.- Взаимодействия.Слово.Документ();

for (int i = 0; i < dv. Count; i++)
{
по каждому элементу (Майкрософт.Офис.- Взаимодействия.Слово.Поле myMergeField в oWordDoc.Поля)
{
Microsoft.Офис.- Взаимодействия.Слово.RngFieldCode диапазон = myMergeField.Код;
Строка fieldText = rngFieldCode.Текст;

if (fieldText. StartsWith ("MERGEFIELD "))
{
string fieldName = fieldText. Replace ("MERGEFIELD ", "");
fieldName = fieldName. Substring(1, fieldName.Индекс("\\") - 1).Отделка();

if (fieldName = = Convert.ToString(dv[i] ["MailMergeFieldName"]))
{
маймергфилд.Выбрать();
строка str = dv[i] ["значение"].Метод toString();
ул. ул. =.Заменить("\\N", в среду.Строки);
oWord.Выбор.TypeText(str);

oWord.Активированный документ.Таблицы[2]. строки. добавить(oWord.Активированный документ.Таблицы[2]. строки[oWord.Активированный документ.Таблицы[2].Строк.Рассчитывать]);
}
}
}
}
ВАР temporaryFolderPath = свойство HttpContext.Тока.Сервер.MapPath ("~/TempReports/");
имя объекта = @temporaryFolderPath + "\ \ EmpReport_ " + arrEmpIds[j] + ". docx";
oWordDoc.SaveAs2(арт именем);

oWord.Видна = ложь;
флаг = true;
документ.Рядом(oMissing Реф oMissing Реф, Реф oMissing);
документ = null;
}

0 Ответов