2015-06-15 1 views
0

Я строю таблицу с помощью OpenXml и устанавливаю свойство Оправдание для каждой ячейки. На самом деле не имеет значения, где я присваиваю это свойство, либо в элементе Run, либо как TableCellProperty, когда документ открывается с помощью инструмента Productivity Tool для MS Office, элемент выравнивания всегда приходит как OpenXmlUnknownElement. Это пример:OpenXml.WordProcessing.Justification всегда приходит как OpenXmlUnknownElement

TableCell tc = new tbl.TableCell(); 
tc.Append(new tbl.TableCellProperties(new tbl.Justification() { Val = tbl.JustificationValues.Right })); 

текст оправдан, но при преобразовании файла DOCX в PDF, оправдание нет, и я предполагаю, что из-за этого OpenXmlUnknownElement вопроса.

Edit: У меня есть проблема в том, что при установке Justification недвижимости на ParagrahProperties для пункта, это не делает выравнивание. Он работает только тогда, когда ParagrahProperties является прямым потомком TableCell:

tc.AppendChild<tbl.ParagraphProperties>(paragraphProperties); 

Но тогда я получаю OpenXmlUnknownElement. Если я добавлю свойства непосредственно к абзацу, я не получу OpenXmlUnknownElement, но он не делает ошибку вообще

ответ

0

Вам необходимо прочитать документацию. TableCellProperties не принимает элемент Justification. Link

Если вы пытаетесь выровнять элементы внутри ячейки, вам нужно поместить ее в ParagraphProperties.

+0

Спасибо, см. Мое редактирование для дальнейшей информации –

+0

Прямой заказ table-> tableRow-> tableCell-> paragraph-> paragraphProperties. Это сработает. Я не думаю, что вы добавляете материал в правильном порядке. 'new Table (новый TableRow (новый TableCell (новый абзац (новый ParagraphProperties (новый Обоснование() {blah})))))'. Я не вижу, где вы определяете 'paragraphProperties'. – jn1kk

+0

Спасибо, проблема в том, что у меня был Run, добавленный перед ParagrahProperties в абзаце –