#c# #image #ms-word #office-interop
#c# #изображение #ms-word (ms-word) #офис-взаимодействие #ms-word #office-взаимодействие
Вопрос:
Привет всем, у меня есть код с открытым XML SDK для поиска полей слияния в документах Microsoft Word и замены их предоставленными данными, это работает хорошо, но теперь я хочу заменить предоставленную строку изображением.
Код по ссылке:
https://www.codeproject.com/Articles/38575/Fill-Mergefields-in-docx-Documents-without-Microso
using (WordprocessingDocument docx = WordprocessingDocument.Open(stream, true))
{
// 2010/08/01: addition
ConvertFieldCodes(docx.MainDocumentPart.Document);
// first: process all tables
foreach (var field in docx.MainDocumentPart.Document.Descendants<SimpleField>())
{
string fieldname = GetFieldName(field, out switches);
// I will get fieldname "ImgLogo" and then I want to add an Image at this position.
}
}
Я получу имя поля «ImgLogo», как показано выше, а затем я хочу добавить изображение в эту позицию. Полный код показан по ссылке выше.
Помогите мне здесь, заранее спасибо.
Ответ №1:
Вы можете использовать операторы mergefield if. Напишите свое утверждение и после того, как вы закончите, вставьте изображение в сегмент else инструкции if.
https://wordmvp.com/FAQs/MailMerge/MMergeIfFields.htm
Нажмите Alt F9, чтобы отобразить коды полей слияния в Word / Excel. If следует редактировать документ шаблона, а не конечный продукт. Поскольку вы не можете видеть поля после их объединения.
Когда вы объедините свое изображение, оно перезапишет оба поля {MERGEFIELD Изображение слияния }. Когда он перезаписывает их, значение { MERGEFIELD MergeImage } = «» не будет истинным и вместо заполнителя будет отображаться ваше изображение. Как указано, изображение-заполнитель должно быть вставлено в = «Вставить заполнитель здесь».
Это работает так же, как и до объединения вашего изображения, { MERGEFIELD MergeImage } равно пустой строке.
Например.
{ IF { MERGEFIELD MergeImage } = "" "Paste Placeholder here" "{ MERGEFIELD MergeImage }" }
разбейте вышесказанное:
{ IF CONDITION "TRUE" "FALSE" }
Если ничего не было объединено, вы получите заполнитель, в противном случае вы получите объединенное изображение.
Комментарии:
1. Спасибо за ответ, но я работаю на c #, и шаблон word содержит <<Img_String>> этот заполнитель. Итак, как я могу технически ввести изображение (заменив заполнитель) в документе, а затем сохранить его. Пожалуйста, укажите контекст на указанную выше ссылку.
2. Когда вы выполняете слияние из в C #, оно перезаписывает поля слияния. Таким образом, вы просто вносите изменения в рассматриваемый документ Word. Нажмите Alt F9, чтобы вместо серых полей увидеть поля слияния.
3. Не забудьте нажать Alt F9 после того, как закончите, чтобы вернуться к нормальному режиму… Я был очень смущен раньше, когда я все еще был в режиме, который отображает полное поле слияния в word
4. Спасибо за ответ, я не хочу вносить изменения в документ, в документе это <<Imglogo>> теперь, когда я получаю поле в коде, а затем я хочу вставить изображение в документ, а затем сохранить его.