Ms office 如何获取工作簿的所有已使用范围
给定一个工作簿,我想浏览它的工作表,并得到它们的使用范围。我已经编写了以下代码,可以正常工作:Ms office 如何获取工作簿的所有已使用范围,ms-office,office-js,Ms Office,Office Js,给定一个工作簿,我想浏览它的工作表,并得到它们的使用范围。我已经编写了以下代码,可以正常工作: function getUsedRanges () { Excel.run(function (ctx) { var worksheets = ctx.workbook.worksheets; var sheetnames = []; worksheets.load('items'); return ctx.sync().the
function getUsedRanges () {
Excel.run(function (ctx) {
var worksheets = ctx.workbook.worksheets;
var sheetnames = [];
worksheets.load('items');
return ctx.sync().then(function() {
for (var i = 0; i < worksheets.items.length; i++) {
worksheets.items[i].load('name');
};
return ctx.sync().then(function() {
for (var i = 0; i < worksheets.items.length; i++) {
sheetnames.push(worksheets.items[i].name);
}
})
}).then(function () {
var usedRange = [];
for (var i = 0; i < worksheets.items.length; i++) {
var worksheet = ctx.workbook.worksheets.getItem(sheetnames[i]);
usedRange[i] = worksheet.getUsedRange();
usedRange[i].load('address');
};
return ctx.sync().then(function() {
for (var i = 0; i < worksheets.items.length; i++) {
console.log(usedRange[i].address);
}
});
})
})
}
有几件事:
1) 工作表。加载('items')代码>什么也不做。集合上的加载应指定您关心的子项的属性名称。因此,如果要查找工作表名称,应执行worksheet.load('name')
,而不需要worksheets.items[i].load('name')代码>
2) 您没有理由执行ctx.workbook.worksheets.getItem(sheetnames[i])
,您只需从刚刚加载的ctx.workbook.worksheets
集合(即ctx.workbook.worksheets.items[0]
)中获取工作表即可
3) 这意味着您的代码可以
function getUsedRanges () {
Excel.run(function (ctx) {
var worksheets = ctx.workbook.worksheets;
worksheets.load('name');
return ctx.sync()
.then(function () {
var usedRange = [];
for (var i = 0; i < worksheets.items.length; i++) {
usedRange[i] = worksheet.getUsedRange();
usedRange[i].load('address');
};
})
.then(ctx.sync)
.then(function() {
for (var i = 0; i < worksheets.items.length; i++) {
console.log(usedRange[i].address);
}
})
})
}
函数getUsedRanges(){
Excel.run(函数(ctx){
var worksheets=ctx.workbook.worksheets;
工作表。加载(“名称”);
返回ctx.sync()
.然后(函数(){
var usedRange=[];
对于(变量i=0;i
~Michael Zlatkovsky,微软办公扩展团队的开发人员谢谢你,Michael。。。例如,是否无法保存全局首字母工作簿
或工作表
,以便在必要时加载其某些属性(例如,项
,名称
)?换句话说,我们是否必须在开始时加载所有属性(稍后需要)并将它们保存在变量中(如此线程)?一件事:我实际上意识到我在上面犯了一个错误,而不是worksheet.load('items')
它应该是worksheet.load(“name”)
function getUsedRanges () {
Excel.run(function (ctx) {
var worksheets = ctx.workbook.worksheets;
worksheets.load('name');
return ctx.sync()
.then(function () {
var usedRange = [];
for (var i = 0; i < worksheets.items.length; i++) {
usedRange[i] = worksheet.getUsedRange();
usedRange[i].load('address');
};
})
.then(ctx.sync)
.then(function() {
for (var i = 0; i < worksheets.items.length; i++) {
console.log(usedRange[i].address);
}
})
})
}