news 2026/6/15 15:38:27

6-13 WPS JS宏 Map实例2--拆分记录到表格

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
6-13 WPS JS宏 Map实例2--拆分记录到表格

实例2--拆分记录到表格

原数据

结果:

代码:

function test(){

var pah = ThisWorkbook.Path + "//";

var arr = Range("A2", Range("E999").End(xlUp)).Value();

var titarr = ["编号", "姓名", "部门", "籍贯", "基本工资"];

var m = new Map();

for (var ar of arr) {

if (m.has(ar[2])) {
var newarr = m.get(ar[2]).concat([ar]);//concat为合并数组;如: var newarr = m.get(财政局).concat([["GH00005","孙明","财政局",38,5695]])
Console.log(JSON.stringify("1."+newarr));
//因newarr是数组不是映射所以打印不显示索引
//打印第一次运行结果:"1.编号,姓名,部门,籍贯,基本工资,GH00001,李五,财政局,18,5651,GH00005,孙明,财政局,38,5695"

m.set(ar[2], newarr);//m.set(财政局, [["编号","姓名","部门","籍贯","基本工资"],[GH00001,李五,财政局,18,5651],["GH00005","孙明","财政局",38,5695]);
Console.log(JSON.stringify("2."+[...m.entries()]));
//打印第一次运行结果:"2.财政局,编号,姓名,部门,籍贯,基本工资,GH00001,李五,财政局,18,5651,GH00005,孙明,财政局,38,5695,民政局,编号,姓名,部门,籍贯,基本工资,GH00002,王六,民政局,23,5662,卫健局,编号,姓名,部门,籍贯,基本工资,GH00003,王九,卫健局,28,5673,残联,编号,姓名,部门,籍贯,基本工资,GH00004,孙小一,残联,33,5684"

} else {
// 如果不存在,则先在 Map 中创建该部门分组,并将表头作为首行,后跟当前记录
m.set(ar[2], [titarr, ar]);// 如:m.set(财政局, [["编号","姓名","部门","籍贯","基本工资"],[GH00001,李五,财政局,18,5651]])
Console.log(JSON.stringify("3."+[...m.entries()]));
//监视窗口:m=[1];Map/object
//打印第一次运行结果:"3.财政局,编号,姓名,部门,籍贯,基本工资,GH00001,李五,财政局,18,5651"

}
}

// 创建一个新的工作簿
var wb = Workbooks.Add();

for (var [key, val] of m.entries()){ // 对 Map 进行遍历

var ws = wb.Sheets.Add(); // 每次创建一个新的工作表
ws.Name = key;//当前部门名称 key

ws.Range("A1").Resize(val.length, 5).Value2 = val;
}

// 删除新工作簿默认多余的最后一个空工作表
wb.Sheets(wb.Sheets.Count).Delete();

// 保存新工作簿到指定路径,文件名为 "拆分结果.xlsx",保存后关闭工作簿
wb.SaveAs(`${pah}拆分结果.xlsm`);
wb.Close();
}

function test(){ var pah = ThisWorkbook.Path + "//"; var arr = Range("A2", Range("E999").End(xlUp)).Value(); var titarr = ["编号", "姓名", "部门", "籍贯", "基本工资"]; var m = new Map(); for (var ar of arr) { if (m.has(ar[2])) { var newarr = m.get(ar[2]).concat([ar]);//concat为合并数组;如: var newarr = m.get(财政局).concat([["GH00005","孙明","财政局",38,5695]]) Console.log(JSON.stringify("1."+newarr)); //因newarr是数组不是映射所以打印不显示索引 //打印第一次运行结果:"1.编号,姓名,部门,籍贯,基本工资,GH00001,李五,财政局,18,5651,GH00005,孙明,财政局,38,5695" m.set(ar[2], newarr);//m.set(财政局, [["编号","姓名","部门","籍贯","基本工资"],[GH00001,李五,财政局,18,5651],["GH00005","孙明","财政局",38,5695]); Console.log(JSON.stringify("2."+[...m.entries()])); //打印第一次运行结果:"2.财政局,编号,姓名,部门,籍贯,基本工资,GH00001,李五,财政局,18,5651,GH00005,孙明,财政局,38,5695,民政局,编号,姓名,部门,籍贯,基本工资,GH00002,王六,民政局,23,5662,卫健局,编号,姓名,部门,籍贯,基本工资,GH00003,王九,卫健局,28,5673,残联,编号,姓名,部门,籍贯,基本工资,GH00004,孙小一,残联,33,5684" } else { // 如果不存在,则先在 Map 中创建该部门分组,并将表头作为首行,后跟当前记录 m.set(ar[2], [titarr, ar]);// 如:m.set(财政局, [["编号","姓名","部门","籍贯","基本工资"],[GH00001,李五,财政局,18,5651]]) Console.log(JSON.stringify("3."+[...m.entries()])); //监视窗口:m=[1];Map/object //打印第一次运行结果:"3.财政局,编号,姓名,部门,籍贯,基本工资,GH00001,李五,财政局,18,5651" } } // 创建一个新的工作簿 var wb = Workbooks.Add(); for (var [key, val] of m.entries()){ // 对 Map 进行遍历 var ws = wb.Sheets.Add(); // 每次创建一个新的工作表 ws.Name = key;//当前部门名称 key ws.Range("A1").Resize(val.length, 5).Value2 = val; } // 删除新工作簿默认多余的最后一个空工作表 wb.Sheets(wb.Sheets.Count).Delete(); // 保存新工作簿到指定路径,文件名为 "拆分结果.xlsx",保存后关闭工作簿 wb.SaveAs(`${pah}拆分结果.xlsm`); wb.Close(); }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 11:44:49

Arduino、ESP32驱动BMV080 PM2.5空气质量传感器(气体传感器篇)

目录 1、传感器特性 2、硬件原理图 3、控制器和传感器连线图 4、驱动程序 4.1、I2C模式下连续读取传感器数值 4.2、SPI模式下连续读取传感器数值 BMV080 PM2.5空气质量传感器基于博世(Bosch)研发的全球最小颗粒物传感器BMV080打造一款集成了无风扇静音设计、10μg/m专业…

作者头像 李华
网站建设 2026/6/15 11:43:19

Miniconda-Python3.10镜像中配置cgroups限制资源使用

Miniconda-Python3.10镜像中配置cgroups限制资源使用 在高校实验室的GPU服务器上,你是否曾经历过这样的场景:一位同学运行一个未经优化的Jupyter Notebook,加载了整个ImageNet数据集到内存,结果系统直接卡死,导致其他五…

作者头像 李华
网站建设 2026/6/15 12:22:14

使用Miniconda避免Python包冲突,保障大模型训练稳定性

使用 Miniconda 避免 Python 包冲突,保障大模型训练稳定性 在现代人工智能研发中,尤其是大模型训练场景下,环境问题早已不再是“配个 Python 就行”的简单任务。你有没有遇到过这样的情况:昨天还能正常跑通的训练脚本,…

作者头像 李华
网站建设 2026/6/15 11:46:21

Miniconda-Python3.10镜像中使用diff比较环境差异

Miniconda-Python3.10镜像中使用diff比较环境差异 在AI模型训练的深夜,你是否经历过这样的场景:本地一切正常,但CI流水线突然失败,报错信息是“ImportError: cannot import name ‘xyz’”。翻遍代码无果,最后发现只是…

作者头像 李华
网站建设 2026/6/15 11:49:22

emwin窗口与对话框:入门级项目应用实例解析

emWin实战指南:从零构建一个可落地的嵌入式GUI界面你有没有遇到过这样的场景?项目已经跑通了主控、传感器和通信模块,就差一个“看起来专业”的操作界面。客户拿着样机问:“能不能加个设置菜单?”、“报警弹窗太丑了&a…

作者头像 李华
网站建设 2026/6/15 11:42:26

Miniconda-Python3.10镜像在电商用户行为分析中的实践

Miniconda-Python3.10镜像在电商用户行为分析中的实践 在电商平台每天产生数亿级用户点击、浏览、加购和下单行为的今天,如何快速、准确地从这些数据中挖掘出有价值的洞察,已经成为企业提升转化率与用户体验的核心竞争力。然而,现实中的数据分…

作者头像 李华