Добавьте подпись к таблице или рисунку в OpenXml
Я пытаюсь создать эту структуру в OpenXml:
<P>
<Table />
<Caption>Table 1 - Some Text 1 </Caption>
<Picture />
<Caption>Figure 1 - Some Text 2 </Caption>
</P>
С точки зрения кода у меня есть:
var currentLine = new Paragraph();
currentLine.AppendChild(new Run(elem)); -> Where the elem is Table
...
currentLine.AppendChild(new Run(elem2)); -> Where the elem2 is Drawing
Поэтому я пропускаю только способ добавления подписей, те же подписи, что и в MS Word References-> Insert Caption.
Некоторая информация о том, как этого добиться, была бы очень признательна.
Руи
2 ответа
Решение
Используйте это: http://www.microsoft.com/en-us/download/details.aspx?id=5124
(Инструмент повышения производительности) - для проверки текстового документа и просмотра того, из чего он состоит.
Введите здесь код:
SimpleField sf = new SimpleField(new Run(new Text("Figure 1")));
Чтобы на самом деле связать что-либо, вам нужно установить sf
"s instruction
имущество.
Вот метод, который я использовал для создания подписей. По сути, создайте SimpleField и добавьте его в абзац.
public Paragraph CreateCaption( string caption, string name )
{
Run run = new Run( new Text() { Text= name + " ", Space = SpaceProcessingModeValues.Preserve } );
SimpleField simpleField = new SimpleField( new Run( new RunProperties( new NoProof() ), new Text() { Text= " ", Space = SpaceProcessingModeValues.Preserve } ) );
simpleField.Instruction = @"SEQ " + name;
Run runLabel = new Run( new Text() { Text= " " + caption, Space = SpaceProcessingModeValues.Preserve } );
ParagraphProperties captionPr = new ParagraphProperties( new ParagraphStyleId() { Val = "Caption" } );
Paragraph paragraph = new Paragraph();
paragraph.ParagraphProperties = captionPr;
paragraph.Append( run );
paragraph.Append( simpleField );
paragraph.Append( runLabel );
return paragraph;
}