Tag: 办公室 JS

无法在Excel中的setSelectedDataAsync之后编辑单元格

我正在使用Office加载项平台开发Excel的加载项。 在这个加载项中,我使用setSelectedDataAsync **函数将数据写入一个范围。 它工作正常,但数据写入后,我不能删除或编辑单元格(虽然我可以select新的范围),除非我单击工作表外的任何地方或双击单元格。 我认为这是Excel没有正确重新获得焦点的问题(应用程序顶部的文件名保持灰显)。 有些用户似乎认为Excel变得没有反应,这是一个问题。 这是一个已知的问题? 有没有解决这个问题? **我注意到setSelectedDataAsync比将range.values设置为matrix然后ctx.sync()更快捷。 我没有使用后一种方法,我失去了一些重要的function?

如何input数组公式

数组公式是使用Ctrl + Shift + Enter在Excel中input的公式。 使用Excel API,当我读取一个数组公式( Range.formulas属性)时,我得到类似[["{=SUM(IF(A1:A10>50,1))}"]] 。 当我尝试将此公式写回到工作表时,它会input一个常量string(因为括号)。 如果我删除括号并input公式,它将作为普通公式input,而不是数组。 我如何input数组公式? 在VBA中,当您读取一个数组公式时,它会返回没有括号的公式。 当你想input一个数组公式时,你可以写range.FormulaArray = =SUM(IF(A1:A10>50,1)) (同样没有括号)。 保持两个plataform(JS和VBA)是一致的,并且还提供像Range.FormulaArray , Range.HasArray和Range.CurrentArray这样的属性。

Excel和Office.js访问CustomXml Part

我们的Web应用程序为客户存储/创build文档。 我们的客户下载这些文档,其中包含客户特定的自定义标签部分,并在Excel和Word文档中存储customxml部分。 我们目前使用一个activex ribbon bar应用程序来检索这些零件,并显示给用户。 这使他们可以通过function区栏应用程序访问这些要插入到文档中的部分。 然后,我们寻求一种更好,更兼容的方式来实现这一点,以摆脱activex,但也允许使用旧版本的Word和Excel的客户端继续使用ActiveX控件。 Microsoft帮助我们创build了Word Addin,使用Angular和Office js在MS Word中实现这一点。 现在我们需要replace我们的Excelfunction栏应用程序。 我领导创build这个工具,发现Excel API目前不允许访问文档结构中的CustomXml Part。 有什么办法来访问Excel中的customxml部分? 有没有计划允许在未来的版本中访问。 如果前两个问题是否定的,你能推荐一个存储和检索这些部分的最佳实践吗? 我们使用Angular2和Office.js来创build新的插件。

parsing“sandbox”属性时出错:“ms-allow-popups”是无效的沙箱标志

我想做一个非常基本的excel插件。 但是,我在Excel Online加载xml文件后出现错误: 有谁知道如何解决这些错误? 这里是xml文件: <?xml version="1.0" encoding="UTF-8"?> <OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0" xmlns:ov="http://schemas.microsoft.com/office/taskpaneappversionoverrides" xsi:type="TaskPaneApp"> <Id>2145a915-4e7b-473f-a879-a5a5e8654152</Id> <Version>1.0.0.0</Version> <ProviderName>Microsoft</ProviderName> <DefaultLocale>en-US</DefaultLocale> <DisplayName DefaultValue="Fun (online)"/> <Description DefaultValue="Fun (online)"/> <Capabilities> <Capability Name="Workbook" /> </Capabilities> <DefaultSettings> <SourceLocation DefaultValue="https://localhost/PRODSERVER/Fun/addin_online/Home.html" /> </DefaultSettings> <Permissions>ReadWriteDocument</Permissions> </OfficeApp> 和Home.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <title>Fun (online)</title> <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.4.min.js"></script> <script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script> <script […]

Office-JS API:从表中获取过滤的数据

我试图找出一种方法来从表中提取只过滤值,如果在Office-JS API中的活动filter。 现在唯一的办法就是从table range values属性中获取所有的表数据: var table = tables.getItemAt(0); var tableRange = table.getRange(); tableRange.load("values"); ctx.sync().then(function () { // This returns all the values from the table, and not only the visible data var values = tableRange.values; }); 如果filter处于活动状态,我可以如何继续从表中只提取可见值的任何想法? 从以前的Office Interop经验来看,我已经通过遍历表范围的不同区域实现了同样的function,但是我无法find相当于Office-JS中的区域。

如何在Mac上清除Excel 2016任务窗格加载项的客户端浏览器caching?

这是前面问题的一个后续问题 ,其中“如何确保在我的任务窗格加载项中看到最新的JS代码”的答案涉及通过服务器添加的元/无caching标记控制客户端caching行为(或版本化服务器资源)。 但是,我正在寻找一种手动方式, 在客户端上 ,为最终用户清除客户端caching似乎存储JavaScript文件,并防止更新的JS文件在服务器上被任务窗格添加使用-在。 在开发过程中,我会经常更新服务器上的JS资源,我正在寻找一个客户端解决scheme,允许使用这些更新的文件。 环境 :在Mac(OSX 10.11.5)上运行的Excel 2016的桌面版本使用Excel / Office.js的v1.2的任务窗格加载项。 场景 :将加载项工件部署到Web服务器,在Mac上运行加载项。 然后在插件中更新foo.js中的代码,重新部署到Web服务器。 运行加载项并从foo.js中查看旧的(更新前)行为。 我曾经尝试过 : 在同一台Mac上,直接从Safari的Web应用程序加载foo.js。 我可以看到我期望在更新版本中的js代码的更改。 清除Safari的caching(隐私>删除所有的网站数据)(我怀疑这不会基于#1的工作 – Safari似乎不与Excel共享caching,但值得一试) – 没有任何改变。 戳到〜/ Library / Containers / com.microsoft.Excel下试图find一个caching – 删除〜/ Library / Containers / com.microsoft.Excel / Data / Library / Caches / com.microsoft.Excel – 没有帮助。 使用任务窗格的上下文菜单中的Reload菜单项(在Mac上看起来像[i]) – 没有区别:仍旧看到旧的foo.js。 Excel(桌面)2016任务窗格加载项引用的JavaScript文件存储在哪里? (在Mac上)以及最终用户如何删除它们?

在Excel office-js加载项中获取当前logging的用户

我想添加到我的Excel加载项的机制,以跟踪执行特定操作的最后一个用户和执行的date。 是否有可能从加载项获取有关当前login到Excel的用户的信息? 谢谢!

我怎样才能改进这个MODE.MULT的实现

我写了一个相对复杂的Microsoft Excel的MODE.MULT函数的实现,它返回一个数组中最频繁出现或重复的值。 它实现了三个循环,包括一个嵌套到另一个,我怀疑有一个更简单的方法去做。 有关信息,它使用Lo-Dash中的 _.uniq从返回的数组中提取重复值。 function MODEMULT(range) { var n = range.length; var max = 0; var counts = new Array(); var result = new Array(); for (var i = 0; i < n; i++) { counts[i] = 0; for (var j = 0; j < n; j++) { if (range[j] === range [i]) { […]

如何查找Office AddIn Host是Word应用程序还是使用office.js的Excel?

我正在创build一个办公室AddIn的工作在Excel和Word应用程序和基于主机,如果它是一个字或Excel主机我想执行不同的逻辑。 我正在使用office.js创build办公室地址。 例如 :- let say type="Excel" // after some logic executed if(type=="Excel") { //run code for excel applications } else { //run code for word applications } 我试图用波纹pipe: if (Office.context.requirements.isSetSupported('ExcelApi', '1.1')) { alert("yes it is excel"); } 但是当我在excel中运行它时,它不工作。 我也在清单文件中发送主机 <Hosts> <Host Name="Document" /> <Host Name="Workbook" /> </Hosts> 我也得到了一些代码更改做了很多谷歌search我find了波纹pipe代码,这是不适合我的工作 function getHostInfo() { var _requirements = […]