OpenXML Копирование разделов документа
Я пишу приложение для создания документа Word из нескольких вложенных документов. Субдокументы отформатированы таким образом, чтобы я мог использовать заголовки и создать древовидное представление для выбора разделов для включения в окончательный документ. Типичная схема размещения:
HeadingLevel1
Текст | Таблица | Drawing
HeadingLevel2
Текст | Таблица | Drawing
HeadingLevel2
...
Мне удалось скопировать разделы с текстом, но я не получаю копии таблиц или рисунков.
private void processDonor(String donorFileName, WordprocessingDocument destinationDocument)
{
using (WordprocessingDocument donorDoc = WordprocessingDocument.Open(CreateDocumentPath(donorFileName), false))
{
//
// Get a reference to the Body of the document
//
Body donorBody = donorDoc.MainDocumentPart.Document.Body;
Body destinationBody = destinationDocument.MainDocumentPart.Document.Body;
//
// Get a list of paragraphs
//
List<Paragraph> donorParaList = new List<Paragraph>();
donorParaList = donorBody.OfType<Paragraph>().Where(p => p.ParagraphProperties != null).ToList();
bool sectionFound = false;
foreach (Paragraph donorParagraph in donorParaList)
{
if (donorParagraph.ParagraphProperties != null &&
donorParagraph.ParagraphProperties.ParagraphStyleId != null &&
donorParagraph.ParagraphProperties.ParagraphStyleId.Val.Value.Contains("Heading"))
{
sectionFound = false;
List<TreeNode> sections = documentSectionTreeView.FlattenTree().Where(n => n.Text == donorParagraph.InnerText).ToList();
foreach (TreeNode section in sections)
{
if (((ParagraphTreeNode)section).fileName == donorFileName &&
section.StateImageIndex != (int)CheckState.Unchecked)
{
sectionFound = true;
break;
}
}
if (sectionFound)
{
Paragraph p = (Paragraph)donorParagraph.CloneNode(true);
destinationBody.AppendChild(p);
}
}
else
{
if (sectionFound)
{
Paragraph p = (Paragraph)donorParagraph.CloneNode(true);
destinationBody.AppendChild(p);
}
}
}
}
}
Таблицы не находятся в абзаце, поэтому они игнорируются, и чертежи имеют заполнитель в целевом документе, но фактические чертежи не копируются.
Я хотел бы перейти к выбранному заголовку и скопировать все из этого заголовка в следующий заголовок так, чтобы AltChunk обрабатывал все, если копировал весь документ.