当前位置: 首页 > news >正文

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(); }
http://www.rkmt.cn/news/184230.html

相关文章:

  • Miniconda镜像内置pip与Conda双工具,灵活安装各类AI框架
  • Miniconda-Python3.10镜像支持生物信息学序列分析流程
  • GitHub项目克隆后如何运行?使用Miniconda-Python3.11快速还原环境
  • 基于Python的宁夏事业单位教师招聘考试可视化系统
  • Miniconda如何帮助用户节省GPU算力成本:环境即服务理念
  • Windows下PyTorch安装教程GPU支持:借助Miniconda-Python3.11轻松完成
  • Miniconda-Python3.11镜像发布:专为AI开发者打造的轻量级Python环境
  • Miniconda-Python3.10镜像支持多模态大模型训练基础
  • 如何在Miniconda-Python3.11中切换不同版本PyTorch进行对比实验
  • 手写 Attribute + Reflection 验证框架
  • Jupyter Notebook实战入门:在Miniconda-Python3.11中运行你的第一个AI模型
  • Miniconda-Python3.10镜像中使用scp/rsync传输大文件
  • Keil5汉化常见问题:新手答疑与解决方案
  • Miniconda-Python3.10镜像中配置swap分区缓解内存压力
  • Miniconda-Python3.10镜像中使用tar/zip压缩解压数据文件
  • STM32CubeMX下载速度慢?Windows加速技巧分享
  • 都是碳素管惹的祸:双通道电磁导航测量
  • 从零开始部署PyTorch GPU版本:基于Miniconda-Python3.11镜像实操指南
  • STM32项目实战:嘉立创EDA从原理图到PCB输出
  • 【东南大学-朱鹏飞组-ICML25】用于退化的多模态图像融合的任务门控多专家协作网络
  • Miniconda-Python3.10镜像支持文本分类任务的端到端流程
  • Miniconda-Python3.10镜像在边缘计算设备上的轻量化部署
  • Miniconda-Python3.10镜像在智能家居控制系统中的嵌入
  • Miniconda+PyTorch+GPU:构建高性能AI算力环境的技术路径
  • 线上学习资源智能推荐系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
  • Windows下Anaconda vs Miniconda配置PyTorch环境对比详解
  • 工业控制项目中IAR软件安装实战案例
  • 实测10款降AI率工具:2025年5个有效方法指南!帮你免费降低AI率,论文降AIGC不再头疼!
  • 从堆栈分析入手:HardFault_Handler问题定位完整指南
  • 2025年论文降ai全攻略:这5款免费降ai率工具亲测有效,帮你快速降低ai率,拯救AIGC爆表!