Копия таблицы OpenXML предоставляет OpenXmlUnknownElement - PullRequest
1 голос
/ 02 марта 2012

Я использую OpenXML SDK с Word для создания этикеток.Базовый документ Word имеет одну страницу с таблицей, две строки и две ячейки, где каждая ячейка представляет одну метку.Я планировал добавлять страницы по мере необходимости в зависимости от размера набора результатов SQL.Добавление страницы работает, но количество таблиц в теле не изменяется.Есть ли способ обновить массив элементов?Я полагаю, что могу получить размер набора результатов и добавить необходимое количество страниц, затем закрыть и снова открыть документ, но я предполагаю, что упускаю что-то простое.

Сообщено о неправильной проблеме извините, документ выглядел правильно в 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?

Ответы [ 2 ]

1 голос
/ 05 марта 2012

new и 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 голосов
/ 03 марта 2012

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

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

...