我在OpenXML API或Word / VSTO API中没有运气,找到了创建或修改书签可见性的方法。即使在Word中手动添加书签,也没有要检查的框以隐藏书签。虽然 是“书签”对话框中的一个复选框,可让您显示隐藏的书签。那么如何在XML中表示隐藏的书签,您可以使用Open XML SDK创建它们吗?或者它们是MS不再希望我们创造的遗产?
答案 0 :(得分:13)
好的,所以这比我想象的要容易......你只需在书签名称前面加下划线。请注意,这只能以编程方式完成,而不是在Word中手动添加书签时。
... Iiiiiiiiinteresting
更新:我发现的另一件事 - 在您可以迭代或访问Bookmarks对象中的隐藏书签之前,必须将其ShowHidden属性设置为true。
PS - 所以,如果您对拼写字典有任何控制权,可以“以编程方式”添加。除非我拼错了。 :)
答案 1 :(得分:0)
我在word文件中创建了普通书签,而不是实际将它们转换为隐藏书签。如上所述,隐藏书签只能以实际方式创建,其名称前面带有“_”。在迭代书签列表时,请确保将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();
}