Excel Script开发需求:复制考勤列至表格末尾并重命名
实现Excel Script考勤数据复制与清空功能
我们需要完成的逻辑是:将表格中Attendance列的考勤数据复制到当日日期命名的新列,随后清空原考勤列,以便下周重新登记。以下是完善后的代码:
function main(workbook: ExcelScript.Workbook) { // 生成当日日期格式(DD/MM/YYYY) var today = new Date(); var dd = String(today.getDate()).padStart(2, '0'); var mm = String(today.getMonth() + 1).padStart(2, '0'); var yyyy = today.getFullYear(); let dateColumnName = dd + '/' + mm + '/' + yyyy; let sh = workbook.getActiveWorksheet(); let tbl = sh.getTable("FBRegister"); // 获取Attendance列及其数据 let attendanceColumn = tbl.getColumn("Attendance"); let attendanceValues = attendanceColumn.getRangeBetweenHeaderAndTotal().getValues(); // 创建当日日期命名的新列并写入数据 let newDateColumn = tbl.addColumn(); newDateColumn.setName(dateColumnName); newDateColumn.getRangeBetweenHeaderAndTotal().setValues(attendanceValues); // 清空Attendance列的内容 attendanceColumn.getRangeBetweenHeaderAndTotal().clear(ExcelScript.ClearApplyTo.contents); }
关键逻辑说明
- 精准获取数据:用
getColumn("Attendance")定位目标列,getRangeBetweenHeaderAndTotal()确保只提取表格的数据区域(排除表头和总计行),避免操作无关单元格。 - 高效批量赋值:通过
getValues()提取数据数组,再用setValues()批量写入新列,比逐单元格复制的执行效率更高。 - 按需清空原列:
clear(ExcelScript.ClearApplyTo.contents)仅清空单元格内容,保留原列格式;如果需要连格式一起清除,可将参数改为ExcelScript.ClearApplyTo.all。
内容的提问来源于stack exchange,提问作者MWFMTL
相关产品推荐
相关产品推荐

