#c# #reporting-services #ms-word #telerik #openxml
Вопрос:
Я создаю отчет SSRS из кода C#, и, поскольку отчет длинный, пользователи должны использовать панель навигации для навигации по документу.
Я создаю отчет с помощью служб SSRS в виде массива байтов, а затем пытаюсь обновить абзацы заголовков, чтобы отобразить элементы на панели навигации…
Однако, если ручной отчет позволяет это, используя стили «Заголовок 1», «Заголовок 2», эти стили, попав в ячейку таблицы, не отображаются на панели навигации.
Текст в ячейке таблицы-это единственный способ работы отчета SSRS. Нет никакого способа поместить текст непосредственно в раздел…
Есть ли способ, с помощью кода, отобразить заголовки ячеек таблицы? или разделите таблицу и вставьте, скажем, вместо табличной ячейки с заголовком 1 Раздел с абзацем, имеющим стиль Заголовка1?
Единственные поля, отображаемые на панели навигации, — это поля, добавленные непосредственно в раздел по коду
string heading1StyleId = BuiltInStyleNames.GetHeadingStyleIdByIndex(1);
string heading2StyleId = BuiltInStyleNames.GetHeadingStyleIdByIndex(2);
string heading3StyleId = BuiltInStyleNames.GetHeadingStyleIdByIndex(3);
document.StyleRepository.AddBuiltInStyle(heading1StyleId);
document.StyleRepository.AddBuiltInStyle(heading2StyleId);
document.StyleRepository.AddBuiltInStyle(heading3StyleId);
TParagraph paragraph = new(document) { StyleId = heading1StyleId };
TParagraph paragraph2 = new(document) { StyleId = heading2StyleId };
TParagraph paragraph3 = new(document) { StyleId = heading3StyleId };
paragraph.Inlines.AddRun(myText);
paragraph2.Inlines.AddRun(myText "2");
paragraph3.Inlines.AddRun(myText "3");
Section section = new Section(document);
section.Blocks.Add(paragraph);
section.Blocks.Add(paragraph2);
section.Blocks.Add(paragraph3);
Комментарии:
1. См. Мою статью: Заголовки, которые не отображаются на панели навигации или в оглавлении answers.microsoft.com/en-us/msoffice/forum/all/… Природа Word и панели навигации такова, что заголовки внутри таблиц не отображаются на панели навигации. Период.
2. @CharlesKenyon «природа слова», похоже, «Бог этого хочет»… есть ли более техническое объяснение и обходной путь, как его решить? Обычно мы размещаем вопросы на SO, чтобы найти решения
3. Именно так строится Слово. Реальной документации о том, как функционирует панель навигации, нет. Он недоступен для vba, но реагирует только на определенный текст в определенном формате, а не на текст в текстовых полях или таблицах. Нет никаких известных работ. Я полагаю, вы могли бы попробовать создать свой собственный аналог панели навигации в виде точки внутри текстового поля или рамки в заголовке, чтобы они отображались на каждой странице. Будучи полем TOC, он будет подбирать эти заголовки в современных версиях Word. Однако на самом деле это не даст кликабельной гиперссылки до тех пор, пока она не будет преобразована в pdf.
4. Если вы хотите сделать дополнительный шаг, переведя его в формат pdf после Word, у вас может быть аналог панели навигации. Вот две временные ссылки, одна из которых относится к документу Word dropbox.com/s/ww6oqlyqpz27r25/… и второе в pdf dropbox.com/s/0p22n9irecvxcmg/… из этого документа.