天道酬勤,学无止境

突出显示文档中的绑定(Highlight bindings in a document)

问题

我有一个使用 JavaScript API for Office 1.1 的 Office 加载项。 我试图突出显示 Word 文档中的绑定和 Excel 文档中单元格的绑定,以便用户可以轻松识别它们。

我看到 API 允许使用 setFormatsAsync 格式化 TableBindings,但我的是 Matrix 和 Text。 我不使用 Table 类型,因为它添加了一个标题行,并且总行弄乱了我的逻辑。

有没有办法格式化或突出显示绑定?

我更喜欢这是暂时的 - 类似于当您将鼠标悬停在绑定顶部时背景颜色会发生一点变化的方式,但我可以忍受为文本着色然后删除颜色。

回答1

您在这里有多种选择。 要使用格式突出显示,请使用 RangeFormat 对象修改轮廓、背景或其他属性。 这是背景填充的代码:

Excel.run(function (ctx) { 
    var myRange = ctx.workbook.bindings.getItem("myBinding").getRange();
    myRange.format.fill.color = "FFFF00";
    return ctx.sync(); 
});

或者,您可以通过使用户的选择移动到绑定来吸引用户的注意力:

Excel.run(function (ctx) { 
    var myRange = ctx.workbook.bindings.getItem("myBinding").getRange();
    myRange.select();
    return ctx.sync(); 
});

最后,如果您希望上面的代码也适用于 Excel 2013,您可以使用以下代码段完成相同的操作:

var myDoc = Office.context.document;
myDoc.goToByIdAsync("myBinding", Office.GoToType.Binding, function (asyncResult) {});

-Michael Saunders,Office 插件项目经理

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 使用冒泡 (JavaScript/jQuery) 将事件处理程序绑定到特定元素(Binding event handlers to specific elements, using bubbling (JavaScript/jQuery))
    问题 我正在开发一个接近 Firebug 检查器工具功能的项目。 也就是说,当鼠标悬停在页面上的元素上时,我想突出显示它们(通过更改它们的背景颜色),并且当它们被点击时,我想执行一个函数来构建一个可以使用的 CSS 选择器来识别它们。 但是,我一直遇到与事件冒泡相关的问题,并且让我自己彻底糊涂了。 与其引导您走这条路,不如解释一下我正在尝试做的事情并寻求一些入门帮助。 以下是一些规格: 我只对包含文本节点的元素(或任何带有文本节点的后代元素)感兴趣。 当鼠标进入这样一个元素时,改变它的背景颜色。 当鼠标离开该元素时,将其背景颜色改回原来的颜色。 当一个元素被点击时,执行一个为该元素构建 CSS 选择器的函数。 我不希望元素边缘区域上的鼠标悬停被视为该元素的鼠标悬停,但对于下方的元素(我认为这是浏览器的默认行为?)。 我可以处理突出显示/取消突出显示的代码,并构建 CSS 选择器。 我主要遇到的问题是将事件处理程序有效地绑定到我想要突出显示/可点击的元素,并避免/停止冒泡,以便将鼠标悬停在 (<p>) 元素上不会同时执行处理程序函数<body>,例如。 我认为这样做的正确方法是将事件处理程序绑定到文档元素,然后以某种方式使用冒泡仅在最顶层元素上执行绑定函数,但我不知道该代码是什么样的,这真的我可以在哪里使用帮助。 我正在使用 jQuery,并希望尽可能多地依赖它。 回答1 您可以向
  • 如何使用JavaScript突出显示文本(How to highlight text using javascript)
    问题 有人可以通过可以在网页上突出显示文本的JavaScript函数来帮助我。 要求是-仅突出显示一次,而不是像我们在搜索情况下那样突出显示所有出现的文本。 回答1 您可以使用jquery突出显示效果。 但是,如果您对原始javascript代码感兴趣,请看一下我得到的内容。简单地将粘贴复制到HTML中,打开文件,然后单击“突出显示”-这应该突出显示“ fox”一词。 在性能方面,我认为这适用于小文本和单个重复(如您指定的那样) function highlight(text) { var inputText = document.getElementById("inputText"); var innerHTML = inputText.innerHTML; var index = innerHTML.indexOf(text); if (index >= 0) { innerHTML = innerHTML.substring(0,index) + "<span class='highlight'>" + innerHTML.substring(index,index+text.length) + "</span>" + innerHTML.substring(index + text.length); inputText.innerHTML = innerHTML; } }
  • NSCollectionView中的选择突出显示(Selection Highlight in NSCollectionView)
    问题 我有一个工作正常的NSCollectionView ,但有一个较小但很关键的异常。 获取并突出显示集合中的选定项目。 在Snow Leopard之前,我已经完成了所有这些工作,但是似乎有些变化,我不能完全NSCollectionView ,所以我将NSCollectionView重新回到了基本测试中,并按照Apple的文档在此处创建了NSCollectionView。 : http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Conceptual/CollectionViews/Introduction/Introduction.html 按照快速入门指南,收藏夹视图可以正常工作。 但是,本指南仅讨论了"There are such features as incorporating image views, setting objects as selectable or not selectable and changing colors if they are selected" 。 以这个为例,我进入了下一步,使用控制器键selectionIndexes将阵列控制器绑定到NSCollectionView
  • WPF ContextMenu 使用 ItemsControl,错误地突出显示整个集合(WPF ContextMenu using ItemsControl, incorrectly highlight the whole collection)
    问题 我需要设计一个包含一个MenuItem ContextMenu ,这个MenuItem有一个更深层次的菜单列表,它绑定到我的 ViewModel 中ObservableCollection类型的属性。 代码如下所示: <ContextMenu DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}" > ... <MenuItem Header="Map to account" > <ItemsControl ItemsSource="{Binding RelatedAccounts}" > <ItemsControl.ItemTemplate> <DataTemplate> <MenuItem Header="{Binding Number}" Command="{Binding PlacementTarget.DataContext.MapToAccountCommand, RelativeSource={RelativeSource AncestorType=ContextMenu}}" CommandParameter="{Binding}" /> </DataTemplate> </ItemsControl.ItemTemplate> <
  • 如何突出显示Emacs缓冲区中单词的所有出现?(How to highlight all occurrences of a word in an Emacs buffer?)
    问题 Notepad ++具有一个方便的功能:如果您在文本中选择一个单词(不一定是关键字),则该单词将在整个文本中突出显示。 可以在Emacs中完成吗? 如果是这样,怎么办? 它不一定必须完全像Notepad ++一样工作(即通过选择)。 理想情况下,我想设置一个键绑定,使所有在光标下出现的单词都突出显示。 这将是巨大的,如果亮点是永久性的,即运动点从突出显示的文字远不应导致被删除的亮点。 同样,如果有一种解决方案可以使高亮之间导航(使用自定义键绑定),将很有用。 回答1 您可能正在http://nschum.de/src/emacs/highlight-symbol/找到highlight-symbol.el: 回答2 hi-lock建议是好的。 我认为使用Mx版本更容易,但是: Mx highlight-regexp RET <REGEXP> Mx highlight-phrase RET <REGEXP> highlight-phrase只是highlight-regexp周围的一小部分,它忽略大小写并转换正则表达式中的空格以匹配任意空白。 便利。 回答3 键入Cs ,然后键入当前单词或键入Cw 。 另外,您现在可以再次按Cs来搜索单词。 这称为增量搜索。 回答4 我使用的是空闲高亮显示 http://www.emacswiki.org/emacs/IdleHighlight
  • 如何在Xamarin.Forms中的ListView上禁用突出显示(How to disable highlight on ListView in Xamarin.Forms)
    问题 我正在使用Xamarin.Forms和XAML,并且正在尝试创建一个存储产品列表的应用程序。 我将产品列表放在ListView中。 这很好。 这是我的XAML: <ListView x:Name="listSushi" ItemsSource="{x:Static local:myListSushi.All}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" RowHeight="{StaticResource rowHeight}" > <ListView.ItemTemplate> <DataTemplate> <ViewCell> <ViewCell.View> <StackLayout Padding="5, 5, 0, 5" Orientation="Horizontal" Spacing="15"> <StackLayout> <Image Source="{Binding ImageSource}" /> </StackLayout> <StackLayout Padding="0, 0, 0, 0" VerticalOptions="Center" HorizontalOptions="FillAndExpand"> <Label Text="{Binding Name}" Font="Bold
  • 如何突出显示列表框内的匹配子字符串?(How to highlight matching sub-strings inside a ListBox?)
    问题 我有一个 TextBox 和一个用于搜索数据集合的列表框。 在列表框中搜索文本时,如果在列表中的任何位置找到匹配的字符串,它应该以绿色和粗体显示。 例如。 我有像“依赖属性、自定义属性、普通属性”这样的字符串集合。 如果我在搜索文本框中键入“prop”,则所有三个带有“prop”(只有 Prop 一词)的内容都应为粗体,其颜色应为绿色。 知道如何做到吗? 列表框内的数据使用 DataTemplate 表示。 回答1 我已经创建了一个 HighlightTextBehavior,您可以将它附加到列表项模板中的 TextBlock(您需要将 System.Windows.Interactivity 的引用添加到您的项目中)。 您将行为绑定到包含要突出显示的文本的属性,然后它会完成其余的工作。 目前,它只突出显示字符串的第一个实例。 它还假定没有其他格式应用于文本。 using System.Linq; using System.Text; using System.Windows.Interactivity; using System.Windows.Controls; using System.Windows; using System.Windows.Documents; using System.Windows.Media; namespace
  • 查找文本(多次)并突出显示(Finding text (multiple times) and highlighting)
    问题 我想在Google文档中找到某个单词的所有实例,然后突出显示它们(或添加注释,以便使其脱颖而出)。 我创建了以下函数,但是它仅找到单词的首次出现(在这种情况下为“ the”)。 关于如何找到单词的所有实例的任何想法将不胜感激! function findWordsAndHighlight() { var doc = DocumentApp.openById(Id); var text = doc.editAsText(); //find word "the" var result = text.findText("the"); //change background color to yellow result.getElement().asText().setBackgroundColor(result.getStartOffset(), result.getEndOffsetInclusive(), "#FFFF00"); }; 回答1 我知道这是个老歌,但这是我在Google脚本中为文本添加效果的方法。 下面的示例专门用于在文档中所有出现的特定字符串上添加突出显示。 function highlightText(findMe) { var body = DocumentApp.getActiveDocument().getBody(); var foundElement
  • 我可以使用Google Apps脚本为Google文档中的某些单词着色吗?(Can I color certain words in Google Document using Google Apps Script?)
    问题 我正在尝试突出显示Google文档中的某些单词。 我知道我可以使用document.replace替换文本,但是它仅替换字符串本身,而不格式化。 有没有一种方法可以使用Google Apps脚本将字符串替换为彩色字符串? 回答1 这是一个更好的解决方案: function highlightTextTwo() { var doc = DocumentApp.openById('<your document id'); var textToHighlight = 'dusty death'; var highlightStyle = {}; highlightStyle[DocumentApp.Attribute.FOREGROUND_COLOR] = '#FF0000'; var paras = doc.getParagraphs(); var textLocation = {}; var i; for (i=0; i<paras.length; ++i) { textLocation = paras[i].findText(textToHighlight); if (textLocation != null && textLocation.getStartOffset() != -1) { textLocation.getElement().setAttributes
  • Angular JS:检测 ng-bind-html 是否完成加载然后突出显示代码语法(Angular JS: Detect if ng-bind-html finished loading then highlight code syntax)
    问题 我正在使用ng-bind-html来绑定从数据库中获取的数据。 <p ng-bind-html="myHTML"></p> app.controller('customersCtrl', function($scope, $http, $stateParams) { console.log($stateParams.id); $http.get("api link"+$stateParams.id) .then(function(response) { $scope.myHTML = response.data.content; // this will highlight the code syntax $('pre code').each(function(i, block) { hljs.highlightBlock(block); }); }); }); 当屏幕上显示数据时,我要运行 $('pre code').each(function(i, block) { hljs.highlightBlock(block); }); 用于突出显示数据中的代码语法,但不是突出显示。 (我在 CKEditor 中使用高亮库来高亮代码语法) 如果我在 1 秒后延迟加载高亮代码,它会起作用,但我认为这不是一个好的解决方案 setTimeout(function () { $('pre
  • 如何使用附加属性在指定关键字的文本块中用粗体突出显示单词(How to highlight the word(s) with bold in text block for specified keyword using the attached property)
    问题 目标是使用匹配的输入关键字将 Textblock 中文本的单词加粗。 例如:Stackoverflow 很有帮助,继续使用 Stackoverflow 来磨练你的技能。 当关键字是:Stackoverflow 时,它现在应该显示为 Stackoverflow非常有用,请继续使用Stackoverflow来提高您的技能。 我试图使用附加属性来实现相同的目标。 下面是相同的快照代码 public class HighLightKeyWord : DependencyObject { //This word is used to specify the word to highlight public static readonly DependencyProperty BoldWordProperty = DependencyProperty.RegisterAttached("BoldWord", typeof(string), typeof(HighLightKeyWord), new PropertyMetadata(string.Empty, OnBindingTextChanged)); public static string GetBoldWord(DependencyObject obj) { return (string)obj.GetValue
  • 单击单个单元格时,如何突出显示整个 DataGrid 行?(How can I highlight an entire DataGrid row when a single cell is clicked?)
    问题 我有一个 DataGrid 定义如下。 当我单击 DataGrid 中的一个单元格时,仅突出显示该单元格。 如何更改它以便在单击单元格时突出显示整行? <DataGrid Name="fileGrid" AutoGenerateColumns="False" Height="150" Width="Auto" Margin="10,10,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" SelectionChanged="fileGrid_SelectionChanged"> <DataGrid.Columns> <DataGridTextColumn Header="Company Name" x:Name="columnCompanyName" Binding="{Binding Path=Customer.CompanyName}" IsReadOnly="True"> </DataGridTextColumn> <DataGridTextColumn Header="Customer Surname" x:Name="columnCustomerSurname" Binding="{Binding Path=Customer.Surname}" IsReadOnly="True"> <
  • 在AngularJS中突出显示过滤结果(Highlighting a filtered result in AngularJS)
    问题 我像电话教程一样在angularJS中使用ng-repeat和filter,但我想在页面中突出显示搜索结果。 使用基本的jQuery,我只需在输入的键上解析页面,但是我试图以有角度的方式进行操作。 有任何想法吗 ? 我的代码: <input id="search" type="text" placeholder="Recherche DCI" ng-model="search_query" autofocus> <tr ng-repeat="dci in dcis | filter:search_query"> <td class='marque'>{{dci.marque}} ®</td> <td class="dci">{{dci.dci}}</td> </tr> 回答1 对于AngularJS v1.2 + HTML: <span ng-bind-html="highlight(textToSearchThrough, searchText)"></span> JS: $scope.highlight = function(text, search) { if (!search) { return $sce.trustAsHtml(text); } return $sce.trustAsHtml(text.replace(new RegExp(search, 'gi')
  • WPF:如何突出显示满足条件的 DataGrid 的所有单元格?(WPF: How to highlight all the cells of a DataGrid meeting a condition?)
    问题 (wpftoolkit) 数据网格通常表示一组对象,行表示每个对象,列表示相应的属性。 我不是这样使用它的。 我用它来表示 2 个集合之间的“交集”。 行表示集合 A 的对象,列表示集合 B 中的对象。 x,y 处的单元格表示来自 fn(collectionA[x],collectionB[y]) 的某个值。 这工作正常。 现在我希望能够查询单元格值。 我希望用户能够做一些事情,比如突出显示值大于 0 的所有单元格? 如何使用数据网格执行此操作? 回答1 一种方法是创建一个以相应方式运行的数据单元格模板(通过 controltemplates.triggers 集合)。 另一种方法是创建数据单元格样式并使用样式触发器在给定绑定具有特定值时设置背景(通过 style.triggers 集合)。 或者您可以使用混合方法。 在您的数据单元格模板中,您可能有一个包含所有内容的边框元素。 例如,您可以为该边框元素创建内联样式。 <Border Width="Auto" Height="Auto" Padding="6,10,6,10" CornerRadius="0,0,20,20"> <Border.Style> <Style TargetType="{x:Type Border}" > <Setter Property="Background" Value="White" />
  • c#忽略大小写突出显示word文档中的文本(Highlight a text in word document in c# ignoring cases)
    问题 我可以使用我的代码搜索/突出显示 Word 文档中的特定单词。 但下面是我面临的问题。 如果搜索词是“it”,那么它会搜索“it”而不是“It”(区分大小写)。 我想搜索“它”和“它”而忽略大小写。 我该如何解决这个问题? 下面是代码 private int FindLoop(Word._Application wordApp, object text, Word._Document aDoc, object aComment, out List<string> OccuranceList, bool insertComment) { int intFound = 0; //object start = 0; //object end = 1; object missing = System.Reflection.Missing.Value; object myfile = saveFileDialog.FileName; Word.Range rng = wordApp.ActiveDocument.Range(ref missing, ref missing); object readOnly = true; //object isVisible = true; object isVisible = false; object oMissing = System
  • 在文本突出显示事件上?(On Text Highlight Event?)
    问题 我很好奇是否有人知道一旦用户完成选择网页上的文本后如何触发函数运行? 我希望用户能够选择文本,并且在短暂的延迟后(或立即,此时无所谓),文本附近会出现一个叠加按钮,用户可以单击该按钮,然后我返回并运行我的更多基于选择的代码。 这是用于Firefox扩展。 我能想到的一个类似示例就像在IE中一样,您可以在其中选择文本,然后显示“ Web加速器”。 我99%的确定我知道我将如何实际叠加按钮,并获取所选文本的位置,但是我不知道如何检查是否有选中的内容,而无需进行某种无限循环,似乎是一个可怕的主意。 编辑: //In my overlay.js with the rest of my sidebar code isTextSelected: function () { var myText = cqsearch.getSelectedText(); var sidebar = document.getElementById("sidebar"); var sidebarDoc = sidebar.contentDocument || document; var curHighlightedDiv = sidebarDoc.getElementById("testDiv"); curHighlightedDiv.innerHTML = "Current text selection:"
  • 如何在WP8的LongListSelector中突出显示所选项目?(How to highlight a selected item in the LongListSelector on WP8?)
    问题 如何在Windows Phone 8的新LongListSelector中突出显示所选项目? 如果我点击列表中的一项,实际上什么也没发生。 我的列表仅包含一个简单的字符串,该字符串将通过TextBlock显示。 但我想强调用户的选择。 谢谢。 回答1 就我而言,我在LongListSelectorItem的DataTemplate中使用了RadioButton控件来实现此目的。 您将在左边框处看到一个选中的未选中符号。 在任何情况下,都必须为所有单选按钮设置相同的组,因此选择仅代表一个条目,这一点很重要。 在Content或RadioButton内部,可以将TextBlock绑定到String 。 我目前不在家里,但是如果这不能解决您的问题,我将在您在家时为您提供一些代码;) 干得好: <LongListSelector.ItemTemplate> <DataTemplate> <ContentControl HorizontalAlignment="Stretch" HorizontalContentAlignment="Left"> <RadioButton HorizontalAlignment="Stretch" Margin="0,0,0,0" GroupName="A" Background="Black" > <StackPanel toolkit
  • 如何突出显示Windows Phone 7中上下文相关搜索的结果?(How to Highlight the result from context sensitive search in windows phone 7?)
    问题 我需要根据Windows Phone 7的文本框中输入的文本突出显示搜索结果。 通常的WPF代码在Windows Phone 7中不起作用。 有人说如何在Windows Phone 7中实现这一点 实际上,这是我用来填充联系人列表的xaml列表框, <ListBox Name="ContactList" ItemsSource="{Binding}" Margin="14,85,14,28" Foreground="White" SizeChanged="ContactList_SizeChanged"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <Border BorderThickness="2" HorizontalAlignment="Left" VerticalAlignment="Center" BorderBrush="{StaticResource PhoneAccentBrush}" > <Image Source="{Binding Converter={StaticResource ContactPictureConverter}}" Width="48" Height="48" Stretch="Fill" Name="img1" /> <
  • 在更新面板中突出显示 gridview 行而不回发(Highlight gridview row in update panel without posting back)
    问题 我在更新面板中有一个网格视图,其中包含以下代码来选择一行,这又会使用表单记录中的详细信息更新另一个更新面板。 protected void gvMainGrid_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { //Make the entire row clickable to select this record //Uses javascript to post page back e.Row.Attributes["onmouseover"] = "this.style.cursor='hand';this.style.textDecoration='underline';"; e.Row.Attributes["onmouseout"] = "this.style.textDecoration='none';"; e.Row.Attributes.Add("onclick", ClientScript.GetPostBackClientHyperlink(this.gvMainGrid, "Select$" + e.Row.RowIndex)); } } 我正在从数据库手动绑定 gridview
  • 如何突出显示ngRepeat中的选定行?(How to highlight a selected row in ngRepeat?)
    问题 我找不到能帮助我解决Angular中这个简单问题的东西。 与位置路径进行比较时,所有答案都与导航栏相关。 我已经使用list和ngRepeat构建了一个动态表。 当我单击一行时,我试图为该行分配一个css类(选中),以突出显示该行已被用户选中的事实,并从先前突出显示的行中删除.selected 。 我缺少在选定的行和css类分配之间进行绑定的方法。 我在每row ( ul )上都应用了ng-click="setSelected()"但我缺少function中应用更改的逻辑。 我的代码-朋克 我的代码: var webApp = angular.module('webApp', []); //controllers webApp.controller ('VotesCtrl', function ($scope, Votes) { $scope.votes = Votes; $scope.statuses = ["Approved","Pending","Trash","Spam"]; $scope.setSelected = function() { console.log("show"); } }); //services webApp.factory('Votes', [function() { //temporary repository till