使用 Office.js 在 Excel 中删除 table 中的空行
Deleting empty rows in a table in Excel with Office.js
抱歉,这是一个非常基本的问题。我正在尝试遍历 Excel table 并使用新的加载项模型删除任何空行。我是 javascript 的新手,所有的异步性和回调都让我陷入困境!
因为我认为这很简单,所以我想知道是否有人可以 post 快速代码示例或建议必须是最简洁的方法吗?抱歉,如果我在文档中遗漏了它。
非常感谢。
蒂姆
我建议您使用宏记录器工具来完成基本工作。然后在带有空行测试的基本 For Each Cell 循环中使用它来完成您的工作。
以下代码应该可以满足您的需求。
Excel.run(function(ctx) {
var rows = ctx.workbook.tables.getItem('YourTableName').rows;
rows.load("values"); // We'll need the rows values to check if they're empty.
return ctx.sync().then(function() {
// Important to go through the items in reverse fashion as deleting a row shifts the rest up.
rows.items.reverse().forEach(function(row) {
// row.values is a double array. Although, we know it can only contain one row.
var isEmpty = row.values[0].every(function(col) {
return col === "";
});
if (isEmpty) {
row.delete();
}
});
}).then(ctx.sync);
}).catch(function(error) {
console.log("Error: " + error);
if (error instanceof OfficeExtension.Error) {
console.log("Debug info: " + JSON.stringify(error.debugInfo));
}
});
希望对您有所帮助,
Gabriel Royer - Office 可扩展性团队的开发人员,MSFT
只是
的一个函数
async function Do_Remove_Empty_Rows_Tbl(context, TblNameStr) {
var rows = context.workbook.tables.getItem(TblNameStr).rows;
rows.load("values");
await context.sync();
rows.items.reverse().forEach(function (row) {
var isEmpty = row.values[0].every(function (col) {
return col === "";
});
if (isEmpty) {
row.delete();
}
});
return context;
}
抱歉,这是一个非常基本的问题。我正在尝试遍历 Excel table 并使用新的加载项模型删除任何空行。我是 javascript 的新手,所有的异步性和回调都让我陷入困境!
因为我认为这很简单,所以我想知道是否有人可以 post 快速代码示例或建议必须是最简洁的方法吗?抱歉,如果我在文档中遗漏了它。
非常感谢。
蒂姆
我建议您使用宏记录器工具来完成基本工作。然后在带有空行测试的基本 For Each Cell 循环中使用它来完成您的工作。
以下代码应该可以满足您的需求。
Excel.run(function(ctx) {
var rows = ctx.workbook.tables.getItem('YourTableName').rows;
rows.load("values"); // We'll need the rows values to check if they're empty.
return ctx.sync().then(function() {
// Important to go through the items in reverse fashion as deleting a row shifts the rest up.
rows.items.reverse().forEach(function(row) {
// row.values is a double array. Although, we know it can only contain one row.
var isEmpty = row.values[0].every(function(col) {
return col === "";
});
if (isEmpty) {
row.delete();
}
});
}).then(ctx.sync);
}).catch(function(error) {
console.log("Error: " + error);
if (error instanceof OfficeExtension.Error) {
console.log("Debug info: " + JSON.stringify(error.debugInfo));
}
});
希望对您有所帮助,
Gabriel Royer - Office 可扩展性团队的开发人员,MSFT
只是
async function Do_Remove_Empty_Rows_Tbl(context, TblNameStr) {
var rows = context.workbook.tables.getItem(TblNameStr).rows;
rows.load("values");
await context.sync();
rows.items.reverse().forEach(function (row) {
var isEmpty = row.values[0].every(function (col) {
return col === "";
});
if (isEmpty) {
row.delete();
}
});
return context;
}