Word / OpenXML - Как мне создать скрытую закладку? - PullRequest
6 голосов
/ 30 марта 2011

Мне не повезло ни в OpenXML API, ни в Word / VSTO API, я нашел способ создать или изменить видимость закладки.Даже при добавлении закладок вручную в Word нет флажка, позволяющего скрыть закладку.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} *} *}} * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.Итак, как скрытые закладки представлены в XML и можно ли их создавать с помощью Open XML SDK?Или это наследие, которое MS больше не хочет, чтобы мы создавали?

Ответы [ 2 ]

14 голосов
/ 30 марта 2011

ОК, так что это проще, чем я думал ... Вы просто предшествуете названию закладки подчеркиванием.Обратите внимание, что это может быть сделано только программно, а не при добавлении закладок вручную в Word.

Iiiiiiiiинтересный ....

Обновление: Еще одна вещь, которую я нашел - перед вамиВы можете перебирать или получать доступ к скрытым закладкам в объекте Bookmarks , вы должны установить для его свойства ShowHidden значение true.

PS - SO, если у вас есть контроль над орфографиейсловарь, вы можете добавить «программно».Если я не пишу это неправильно.:)

0 голосов
/ 30 мая 2013

Я создал нормальные закладки в словесном файле и затем преобразовал их в скрытую закладку прагматично. Как было сказано выше, скрытые закладки могут создаваться только прагматично, а их имени предшествует «_». При любой итерации списка закладок убедитесь, что для Bookmarks.ShowHidden установлено значение true, в противном случае скрытые закладки не будут отображаться в списке. Ниже приведен код, который я использовал, чтобы скрыть все видимые закладки. В самом конце я также очищаю запись отмены, чтобы убедиться, что пользователь не может отменить сделанные мной изменения. Вы можете создать собственную запись отмены, если хотите, удалить последнее действие.

public static void hideAllBookmark(Document doc)
{
    String newName = null;
    Range newRange = null;
    bool backup = doc.Bookmarks.ShowHidden;
    doc.Bookmarks.ShowHidden = false;

    for (int i = doc.Bookmarks.Count; i > 0; i--)
    {
        if (!doc.Bookmarks[i].Name.Substring(0, 1).Equals("_", StringComparison.OrdinalIgnoreCase))
        {
            newName= "_" + doc.Bookmarks[i].Name;
            newRange = doc.Bookmarks[i].Range;
            doc.Bookmarks[i].Delete();
            doc.Bookmarks.Add(newName, newRange);
        }
    }
    doc.Bookmarks.ShowHidden = backup;
    doc.UndoClear();
}
...