【发布时间】:2017-01-22 22:34:35
【问题描述】:
我正在使用 javascript API 为 excel 2016 开发插件。我可以成功地将范围放入数组并获取要显示在 console.log 中的值。我还能够使用 JSON.stringify();
将值放入 JSON 数组我需要操作数组来删除空值(“”)。 这可以通过使用常规的 javascript 数组方法来完成吗?
我想我可以使用与 var shWk 类似的方法将结果显示回不同的工作表中
以下是我正在尝试做的一些 sn-ps:
(function () {
"use strict";
// The initialize function must be run each time a new page is loaded
Office.initialize = function (reason) {
$(document).ready(function () {
app.initialize();
//document.getElementById("date").innerHTML = Date("MAR 30 2017");
$('#deleteTab').click(deleteTab);
$('#preview').click(preview);
$('#publish').click(publish);
});
};
function preview() {
Excel.run(function(ctx) {
//getting the colname from a date range in B2
var colName = ctx.workbook.worksheets.getItem('preview').getRange("B2");
colName.load('values');
return ctx.sync().then(function() {
//converting colname value to string for column name
var wkN = (colName.values).toString();
// displaying on the task pane
document.getElementById("tst").innerText = wkN;
// testing to confirm i got the correct colname
var shWk = ctx.workbook.worksheets.getItem('preview').getRange("B3");
shWk.values = colName.values;
//building the column connection by setting the table name located on a different worksheet
var tblName = 'PILOT_ZMRP1';
var tblWK = ctx.workbook.tables.getItem(tblName).columns.getItem(wkN);
//loading up tblWK
tblWK.load('values');
return ctx.sync().then(function(){
//this is where my question is:
var arry = tblWK.values;
for (var i=0; i < tblWK.length; i++){
if (tblWK.values !== ""){
arry.values[i][0]) = tblWK.values[i][0]
};
};
console.log(arry.length); //returns 185
console.log (arry.values);//returns undefined
tblWK.values = arry;
var tblWeek = tblWK.values;
console.log(tblWeek.length);//returns 185
console.log(tblWK.values);//returns [object Array] [Array[1],Array[2]
})
});
}).catch(function (error) {
console.log(error);
console.log("debug info: " + JSON.stringify(error.debugInfo));
});
}
我错过了什么?您能否指出一些在 office.js 的特定上下文中处理 javascript 数组的资源?
【问题讨论】:
-
您是想用空值替换空字符串值(为什么?),还是“删除”对您有其他意义?你所追求的更宏观的场景是什么?
-
我正在寻找删除数组中返回的空值。有些单元格包含一个值,有些单元格包含“”。这些值对于每一列都是不同的。我正在尝试实现的是一个仅包含真值的数组,而不是包含“”和诸如“text”或16(数字)之类的值的数组。
-
您的代码中似乎有错误。如果所有项目都是“”,那么您看到的也是我期望的结果。如果有一个项目不是“”,我预计会出错。如果您没有看到错误,请在这两行之间添加“use strict”,编译器应该强制它:return ctx.sync().then(function(){ //这是我的问题所在:
标签: javascript excel office-js