Хорошо, я пробую это; использовать файл 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, ошибки нет, но все содержимое не заполнено.
Привет, Марк, спасибо за помощь. Я просто обнаружил, что мы можем добавить специальный элемент управления в файл Word и указать для каждого из них определенное имя. Считаете ли вы, что это хороший идеал, чтобы разобраться в этом, и после того, как поисковые тезисы контролируют их имена в приложении C#? –
Вы имеете в виду контроль контента/контроль содержимого контента? Зависит от гибкости, которую вы хотите заменить в элементах. Если этот элемент управления позволяет вам делать то, что вы хотите, я сначала попытаюсь это решение! Вы можете найти хороший и полный пример использования управления контентом здесь: http://www.codeproject.com/Articles/29938/Adding-An-Image-to-a-Word-Document-Programmaticall Я добавил этот вариант для моего ответа для будущей справки –
Да, контроль контента (богатый текст, изображение, ...). Я думаю, что это хороший способ указать зону в документе Word, а затем найти ее и добавить значение. Но что вы подразумеваете под гибкой? –