2015-08-13 3 views
-1

я использую файл Office Word (шаблон) и в этом файле есть повторяющийся текст по умолчанию и фото, что я должен заменить его на другую фотографию и текстДобавить текст и изображение в .docx файл

Как я могу определить определенной зоны в шаблоне, а затем найти эти зоны в C# для их замены?

ответ

0

Мой последний подход состоял в том, чтобы использовать Content Control в документе Word с уникальным идентификатором. Затем я могу найти эти идентификаторы с C# и заменить содержимое.

0

Я думаю, что лучший способ - выяснить, как манипулировать структурой xml слова, чтобы включить нужные данные.

Для заполнения шаблона и изменения вы можете использовать XML SDK от Microsoft

Вы также можете следить за этой ручной подход здесь без использования SDK. Manual approach. Вы добавите собственный XML Ressource, который включает ваши изменения/ресурсы для шаблона.

Если вам не нужно быть гибким, вы можете использовать стандартное управление контентом контента/управления контентом в Word и затем заменить их на C# - это зависит от того, насколько гибкой вы хотите заменять элементы. Вы можете найти хороший и полный пример использования управления изображением здесь: Picture content control handling

+0

Привет, Марк, спасибо за помощь. Я просто обнаружил, что мы можем добавить специальный элемент управления в файл Word и указать для каждого из них определенное имя. Считаете ли вы, что это хороший идеал, чтобы разобраться в этом, и после того, как поисковые тезисы контролируют их имена в приложении C#? –

+0

Вы имеете в виду контроль контента/контроль содержимого контента? Зависит от гибкости, которую вы хотите заменить в элементах. Если этот элемент управления позволяет вам делать то, что вы хотите, я сначала попытаюсь это решение! Вы можете найти хороший и полный пример использования управления контентом здесь: http://www.codeproject.com/Articles/29938/Adding-An-Image-to-a-Word-Document-Programmaticall Я добавил этот вариант для моего ответа для будущей справки –

+0

Да, контроль контента (богатый текст, изображение, ...). Я думаю, что это хороший способ указать зону в документе Word, а затем найти ее и добавить значение. Но что вы подразумеваете под гибкой? –

0

Хорошо, я пробую это; использовать файл Word, с Content Control и использовать XML-файл для привязки данных к ним

Для этого я использую следующий код:

string outFile = @"D:\template_created.docx"; 
string docPath = @"D:\template.docx"; 
string xmlPath = @"D:\template.xml"; 

File.Copy(docPath, outFile); 

using (WordprocessingDocument doc = WordprocessingDocument.Open(outFile, true)) 
{ 
    MainDocumentPart mdp = doc.MainDocumentPart; 
    if (mdp.CustomXmlParts != null) 
    { 
     mdp.DeleteParts<CustomXmlPart>(mdp.CustomXmlParts); 
    } 
    CustomXmlPart cxp = mdp.AddCustomXmlPart(CustomXmlPartType.CustomXml); 

    FileStream fs = null; 
    try 
    { 
     fs = new FileStream(xmlPath, FileMode.Open); 

     cxp.FeedData(fs); 
     mdp.Document.Save(); 
    } 
    finally 
    { 
     if (fs != null) 
     { 
      fs.Dispose(); 
     } 
    } 
} 

Когда я запустить приложение, он создал собственный файл XML и добавляемый это в мой файл Word. Когда я открываю файл Word, ошибки нет, но все содержимое не заполнено.

Смежные вопросы