У меня есть шаблон docx с метками, которые я заменяю html-кодом.
Например вместо метки [summary] я вставляю такой html-код: <p>test paragraph</p>
Делаю я это так:
...
var htmlAsUtf8Bytes = Encoding.Default.GetBytes(replaceText);
string partId = "id_" + random.Next();
AlternativeFormatImportPart formatImportPart = mainDocumentPart.AddAlternativeFormatImportPart(
AlternativeFormatImportPartType.Html, partId);
formatImportPart.FeedData(new MemoryStream(htmlAsUtf8Bytes));
AltChunk altChunk = new AltChunk { Id = partId };
paragraph.InsertBeforeSelf(altChunk);
paragraph.Remove();
...
Все работает. Но когда открываешь файл в MS Word, то к замененным частям документа не применяются стили (такие как: Обычный, Заголовок, Строгий, Без интервала и т.д.) Хотя в остальных частях документа (которые не заменялись) стиль - Обычный.
Я отображаю этот документ в HTML5 Document Viewer Control - Gnostice
Части, к которым не был применен стиль вообще не отображаются в этом редакторе. Если вручную задать стили через MS Word то редактор их отображает.
Как с помощью OpenXML задавать стили к вставляемому html?
[edit]
Пытаюсь сделать так:
StyleDefinitionsPart part = mainDocumentPart.StyleDefinitionsPart;
DocumentFormat.OpenXml.Wordprocessing.Style style = new DocumentFormat.OpenXml.Wordprocessing.Style()
{
Type = StyleValues.Paragraph,
StyleId = "Heading1",
BasedOn = new BasedOn() { Val = "Normal" },
NextParagraphStyle = new NextParagraphStyle() { Val = "Normal" }
};
StyleName styleName1 = new StyleName() { Val = "heading 1" };
style.Append(styleName1);
style.Append(new PrimaryStyle());
StyleRunProperties styleRunProperties1 = new StyleRunProperties();
styleRunProperties1.Append(new DocumentFormat.OpenXml.Wordprocessing.Bold());
styleRunProperties1.Append(new RunFonts()
{
ComplexScriptTheme = ThemeFontValues.MajorBidi,
HighAnsiTheme = ThemeFontValues.MajorHighAnsi,
EastAsiaTheme = ThemeFontValues.MajorEastAsia,
AsciiTheme = ThemeFontValues.MajorAscii
});
styleRunProperties1.Append(new DocumentFormat.OpenXml.Wordprocessing.FontSize() { Val = "28" });
styleRunProperties1.Color = new DocumentFormat.OpenXml.Wordprocessing.Color()
{
Val = "365F91",
ThemeShade = "BF",
ThemeColor = ThemeColorValues.Accent1
};
style.Append(styleRunProperties1);
part.Styles.Append(style);
ParagraphProperties pPr = new ParagraphProperties();
ParagraphStyleId paragraphStyleId1 = new ParagraphStyleId() { Val = "Heading1" };
pPr.Append(paragraphStyleId1);
Потом так:
paragraph.Append(pPr);
paragraph.InsertBeforeSelf(altChunk);
paragraph.Remove();
Но на InsertBeforeSelf происходит исключение:
Additional information: Cannot insert the OpenXmlElement "newChild" because it is part of a tree.
Мне надо в одном списке хранить как общие параметры, так и пользовательские параметрыДля этого я использую вложенные классы
У класса есть свойство типа double, как задать, чтобы оно сериализовалось с конкретным количеством знаков после запятой?
Подлагивает интерфейс Visual Studio с установленным R#
Добрый день! Подскажите, пожалуйста, как решить такую задачу, мне нужно выводить записи в ListView начиная с предпоследней опубликованной, последнюю...