Итак, во-первых, вот мой код, чтобы открыть dotx и создать новую копию docx (из которой затем модифицируется копия).Сокращенно для краткости, но, по сути, требуется 3 параметра таблицы данных (чтобы ее можно было использовать в устаревших системах), путь UNC в виде строки к шаблону и путь UNC в виде строки в выходной документ:
using (WordprocessingDocument docGenerated = WordprocessingDocument.Open(outputPath, true))
{
docGenerated.ChangeDocumentType(WordprocessingDocumentType.Document);
foreach (SimpleField field in docGenerated.MainDocumentPart.Document.Descendants<SimpleField>())
{
string mergeFieldName = GetFieldName(field).Trim();
DataRow[] dr = dtSchema.Select("FieldName = '" + mergeFieldName + "'");
if (dr.Length > 0)
{
string runProperties = string.Empty;
foreach (RunProperties property in field.Descendants<RunProperties>())
{
runProperties = property.OuterXml;
break;
}
Run run = new Run();
run.Append(new RunProperties(runProperties));
run.Append(new Text(dr[0]["FieldDataValue"].ToString()));
field.Parent.ReplaceChild<SimpleField>(run, field);
}
}
docGenerated.MainDocumentPart.Document.Save();
}
Первоначально я взял шаблон .dot и повторно сохранил его как .dotx, скрестив пальцы, не сработало.Поэтому вместо этого я попытался удалить все поля слияния в .dotx и добавить их снова.Это сработало, но оно нашло бы только одно поле слияния (как SimpleField), в частности, последнее, добавленное перед сохранением .dotx.Рассматривая шаблон с помощью инструмента повышения производительности Open XML, я вижу, что все остальные поля слияния имеют тип w: instrText, поэтому их игнорируют.
Я буквально только начинаю с OpenXML какмы собираемся заменить нашу нынешнюю автоматизацию офиса этим, поэтому я очень мало знаю на данный момент.Может кто-нибудь, пожалуйста, проинструктировать меня немного дальше или указать мне хороший ресурс?У меня Google немного, но я не могу найти свою конкретную проблему.Я пытаюсь отложить чтение всей документации SDK (я знаю, я знаю!), Так как мне нужно быстро собрать решение, поэтому я концентрируюсь на одной задаче - взять наши существующие шаблоны .dot, преобразовать их в.dotx и просто замените поля слияния данными для получения .docx.
Заранее спасибо!