2012-03-02 2 views
0

Я использую OpenXML SDK со словом для создания меток. В базовом Word doc есть одна страница с таблицей, двумя строками и двумя ячейками, где каждая ячейка представляет собой одну метку. Мой план состоял в том, чтобы добавлять страницы по мере необходимости на основе размера набора результатов SQL. Добавление страницы работает, но количество таблиц в теле не изменяется. Есть ли способ обновить массив Element? Я предполагаю, что могу получить размер результирующего набора и добавить необходимое количество страниц, затем закрыть и снова открыть документ, но я предполагаю, что мне не хватает чего-то простого.OpenXML table copy дает OpenXmlUnknownElement

Сообщить о неправильной ошибке Извините, документ выглядел корректно в Word, но не в инструменте производительности. Я обновил код, чтобы показать свою последнюю попытку. iTest теперь сообщает о правильном количестве таблиц, но в инструменте производительности добавленные таблицы помечены как OpenXmlUnknownElement.

for (int i = 0; i < pages; ++i) 
{ 
    Table table = new Table(doc.MainDocumentPart.Document.Body.Elements<Table>().First().CloneNode(true)); 
    doc.MainDocumentPart.Document.Body.Append(table); 
} 
int iTest = doc.MainDocumentPart.Document.Body.Elements<Table>().Count(); 

XML-показывает есть дополнительный <w:tbl> генерироваться:

<w:tbl xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> 
    <w:tbl> 
    <w:tblPr> 
     <w:tblStyle w:val="TableGrid" /> 

Таким образом, реальный вопрос, как скопировать и вставить таблицу с OpenXML SDK?

ответ

0

новые и CloneNode были избыточными, также InsertAfter не был необходим, но вместе таблицы были сохранены. Поскольку я не обновляю этикетки до тех пор, пока вставка после First() не будет работать для моей цели.

for (int i = 0; i < pages; ++i) 
{ 
    doc.MainDocumentPart.Document.Body.InsertAfter(doc.MainDocumentPart.Document.Body.Elements<Table>().First().CloneNode(true), MDP.Document.Body.Elements<Table>().First()); 
} 
0

Попробуйте Descendants<Table> вместо Elements<Table>.

Также опубликуйте XML своего тела, чтобы мы могли помочь вам.

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