Office-JS API:从表格中获取过滤的数据
我想弄清楚如何在Office-JS API中激活过滤器时只从表格中提取过滤值的方法。Office-JS API:从表格中获取过滤的数据
眼下只有我想通获取所有表数据的方式是从上表范围值属性:
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;
});
我如何能继续从该表,如果只获取可见值的任何想法过滤器处于活动状态?
从以前使用Office Interop的经验来看,我通过遍历表范围的不同区域实现了同样的效果,但是我无法找到与Office-JS中的区域等效的东西。
获取仅筛选数据的一种方法是通过Binding.getDataAsync method,它需要filterType parameter。
Office.select("bindings#myTableBinding1").getDataAsync({
coercionType: "table",
filterType: "onlyVisible"
},function(asyncResult){
var values = (asyncResult.value.rows);
});
此代码假定您已经创建了表的绑定。如果没有,你可以先运行下面的代码,它使用表名来调用Bindings.addFromNamedItemAsync:
Office.context.document.bindings.addFromNamedItemAsync("Table1","table",{
id: "myTableBinding1"
},function(asyncResult){
// handle errors and call code sample #1
});
注意,因为它使用了共享的API之上的解决方案的支持,早在Excel的2013年Excel特定的API集还不具有仅返回未过滤数据的功能。
- 迈克尔·桑德斯,PM为Office插件
的功能即将推出下一波为Excel JS的API 1.3的一部分,将包括一个新的对象“RangeView”,让您只读关闭可见值范围对象。 以下是GitHub上打开的规范的链接 - https://github.com/OfficeDev/office-js-docs/tree/ExcelJs_1.3_OpenSpec/excel。 请注意,这尚不可用,但将在不久的将来。
使用您的情况下关闭表是这样的:
var table = tables.getItemAt(0);
var visibleView = table.getRange().getVisibleView();
ctx.load(visibleView);
ctx.sync().then(function() {
var values = visibleView.values;
});
嗨菲利普。 太棒了!这正是我需要的。希望他们能尽快发布,因为我们的客户正在推动我们尽快完成这个插件。同时我想我将不需要过滤器支持。 –
我试着从迈克尔的解决方法,它的工作原理是从绑定表中获取过滤结果,并将使用,直到1.3出来。感谢您的好信息! –
@MatsOftedal,菲利普提到的API将很快推出Beta版...一旦它们启动,您将看到新的更改http://dev.office.com/changelog –
喜迈克尔。非常感谢您的解决方法!它很棒! 作为来自VSTO Interop开发的开发人员,我认识到使用新的JavaScript API时必须考虑非常不同。 –
Michael,提供的函数在获取过滤的数据方面效果很好,但由于它似乎返回一个纯粹的二维数组,其行列已被删除,您是否知道如何保留原始未过滤的行号,以便我可以处理过滤结果后找回原始单元格? –