Слово: Отображение навигации по заголовкам в табличной ячейке

#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/… из этого документа.