将列中的单元格值填充到 Excel Office.js 中另一列的空白单元格
Populate cell values from column to blank cells from another column in Excel Office.js
我有一个 table,用户用值填充了一个基本列,以下列可能有我用该基本列值填充的空值:
我编写了执行该逻辑的代码,加载列和行,分别修改它们,然后我想将它们加载到 sheet 中只是为了看看它是否正确:
Excel.run(function (context) {
var currentWorksheet = context.workbook.worksheets.getActiveWorksheet();
var inputsTable = currentWorksheet.tables.getItem("Inputs");
var baseValues = inputsTable.columns.getItemAt(1).load("values");
var columnsLoad = inputsTable.columns.load("values");
var rowsLoad = inputsTable.rows.load("values");
return context.sync()
.then(function () {
var rows = rowsLoad.items;
var columns = columnsLoad.items;
// Populate base
for (let i = 2; i < columns.length; i++) {
for (let j = 1; j < rows.length; j++) {
if(columns[i][j] == "")
columns[i][j] = baseValues.values[j];
}
}
// Write data from table back to the sheet
currentWorksheet.getRange("A25:A48").values = baseValues.values;
currentWorksheet.getRange("B25:B48").values = columns[2].values;
// Sync to update the sheet in Excel
return context.sync();
});
})
我没能做到,因为写作测试显示数据未修改:
当预期应该是这样的:
我做错了什么?
在明智地决定在 Web 浏览器中调试它并更好地了解对象的工作原理后,我提出了这个解决方案:
Excel.run(function (context) {
var currentWorksheet = context.workbook.worksheets.getActiveWorksheet();
var inputsTable = currentWorksheet.tables.getItem("Inputs");
var baseValues = inputsTable.columns.getItemAt(1).load("values");
var columnsLoad = inputsTable.columns.load("values");
var rowsLoad = inputsTable.rows.load("values");
return context.sync()
.then(function () {
var rows = rowsLoad.items;
var columns = columnsLoad.items.slice();
// Populate base
for (let i = 2; i < columns.length; i++) {
let column = columns[i].values
for (let j = 1; j < rows.length; j++) {
if(column[j][0] == ""){
column[j][0] = baseValues.values[j][0];
}
}
}
console.log(columns[2].values)
// Write data from table back to the sheet
currentWorksheet.getRange("A25:A46").values = baseValues.values;
currentWorksheet.getRange("B25:B46").values = columns[2].values;
// Sync to update the sheet in Excel
return context.sync();
});
})
我有一个 table,用户用值填充了一个基本列,以下列可能有我用该基本列值填充的空值:
我编写了执行该逻辑的代码,加载列和行,分别修改它们,然后我想将它们加载到 sheet 中只是为了看看它是否正确:
Excel.run(function (context) {
var currentWorksheet = context.workbook.worksheets.getActiveWorksheet();
var inputsTable = currentWorksheet.tables.getItem("Inputs");
var baseValues = inputsTable.columns.getItemAt(1).load("values");
var columnsLoad = inputsTable.columns.load("values");
var rowsLoad = inputsTable.rows.load("values");
return context.sync()
.then(function () {
var rows = rowsLoad.items;
var columns = columnsLoad.items;
// Populate base
for (let i = 2; i < columns.length; i++) {
for (let j = 1; j < rows.length; j++) {
if(columns[i][j] == "")
columns[i][j] = baseValues.values[j];
}
}
// Write data from table back to the sheet
currentWorksheet.getRange("A25:A48").values = baseValues.values;
currentWorksheet.getRange("B25:B48").values = columns[2].values;
// Sync to update the sheet in Excel
return context.sync();
});
})
我没能做到,因为写作测试显示数据未修改:
当预期应该是这样的:
我做错了什么?
在明智地决定在 Web 浏览器中调试它并更好地了解对象的工作原理后,我提出了这个解决方案:
Excel.run(function (context) {
var currentWorksheet = context.workbook.worksheets.getActiveWorksheet();
var inputsTable = currentWorksheet.tables.getItem("Inputs");
var baseValues = inputsTable.columns.getItemAt(1).load("values");
var columnsLoad = inputsTable.columns.load("values");
var rowsLoad = inputsTable.rows.load("values");
return context.sync()
.then(function () {
var rows = rowsLoad.items;
var columns = columnsLoad.items.slice();
// Populate base
for (let i = 2; i < columns.length; i++) {
let column = columns[i].values
for (let j = 1; j < rows.length; j++) {
if(column[j][0] == ""){
column[j][0] = baseValues.values[j][0];
}
}
}
console.log(columns[2].values)
// Write data from table back to the sheet
currentWorksheet.getRange("A25:A46").values = baseValues.values;
currentWorksheet.getRange("B25:B46").values = columns[2].values;
// Sync to update the sheet in Excel
return context.sync();
});
})