如何使用 Office 脚本删除 table 中的列
How to delete columns in a table using Office Scripts
我有一个 table,我希望删除特定的列以便通过 Office 脚本进行进一步处理。还查看了 API 参考资料,但我找不到这样做的方法。
我总共有 ~30 列,但想删除包含空白行数据的几列,之后计划使用 getId()
或 getIndex()
对减少的内容执行进一步的操作一组列。
我担心的是每个 Excel 文件没有固定数量的列,也没有特定的顺序,所以我想使用 getColumnById
或 getColumnByName
将是一个挑战。
我最多只能确定列数,但只是想知道是否有办法实现上述目标。
let headerRangeValues = bodyRange.getColumnCount();
此脚本将删除 table 中完全为空的所有列。让我知道这是否能解决您的问题。
function main(workbook: ExcelScript.Workbook) {
let selectedSheet = workbook.getActiveWorksheet();
let table = selectedSheet.getTables()[0];
let body = table.getRangeBetweenHeaderAndTotal().getValues();
let headers= table.getHeaderRowRange().getValues();
for (let column=table.getColumns().length-1; column>=0; column--){
var entireColumnIsEmpty = true;
for (let row=0; row<table.getRowCount(); row++){
if (body[row][column] != ""){
entireColumnIsEmpty = false;
break;
}
}
if (entireColumnIsEmpty){
table.getColumnByName(""+headers[0][column]).delete();
}
}
}
我有一个 table,我希望删除特定的列以便通过 Office 脚本进行进一步处理。还查看了 API 参考资料,但我找不到这样做的方法。
我总共有 ~30 列,但想删除包含空白行数据的几列,之后计划使用 getId()
或 getIndex()
对减少的内容执行进一步的操作一组列。
我担心的是每个 Excel 文件没有固定数量的列,也没有特定的顺序,所以我想使用 getColumnById
或 getColumnByName
将是一个挑战。
我最多只能确定列数,但只是想知道是否有办法实现上述目标。
let headerRangeValues = bodyRange.getColumnCount();
此脚本将删除 table 中完全为空的所有列。让我知道这是否能解决您的问题。
function main(workbook: ExcelScript.Workbook) {
let selectedSheet = workbook.getActiveWorksheet();
let table = selectedSheet.getTables()[0];
let body = table.getRangeBetweenHeaderAndTotal().getValues();
let headers= table.getHeaderRowRange().getValues();
for (let column=table.getColumns().length-1; column>=0; column--){
var entireColumnIsEmpty = true;
for (let row=0; row<table.getRowCount(); row++){
if (body[row][column] != ""){
entireColumnIsEmpty = false;
break;
}
}
if (entireColumnIsEmpty){
table.getColumnByName(""+headers[0][column]).delete();
}
}
}