wps js宏写一个可以批量合并Excel文件表格数据的工具

您所在的位置:网站首页 批量合并多个工作表 wps js宏写一个可以批量合并Excel文件表格数据的工具

wps js宏写一个可以批量合并Excel文件表格数据的工具

2024-07-01 00:22| 来源: 网络整理| 查看: 265

wps发布JS宏编辑器的功能已经很久了,今天尝试写了个非常简单的Excel表格合并的工具,发现真的是吊打VBA语言!就是有个小小的缺点:不支持外接程序和ActiveX控件,有点可惜,不过终于可以摆脱VBA傻傻的数组、和字典操作了。

核心功能可以通过选择需要的表格来进行合并,并将数据写入到一个新建的工作簿中,可以指定合并后的文件名称,先看动画效果:

实现思路:

通过Application.GetOpenFilename方法获取选中文件的完整路径

js数组迭代遍历文件路径,利用Workbooks.Open方法打开每一个Excel文件

然后用Range.CurrentRegion方法把有数据的区域转化为js可操作的数组

将合并的数据写入到新建的Excel文件中

步骤

一、在wps新建一个Excel文件,切换到开发工具,点击切换到JS环境,然后创建两个按钮,在设计模式下双击创建好的按钮,wps宏编辑器即可生成对应按钮的点击事件处理函数

二、代码其实非常简单,会js都没问题,看注释应该就能理解,这里就直接上代码

源码下载(不需要积分):https://download.csdn.net/download/huaermeier/87415538

function CommandButton1_Click() { //文件筛选条件, 标题, 可选多个文件 let file = Application.GetOpenFilename({ FileFilter: 'Excel File(*.xls;*.xlsx;*.csv), *.xls;*.xlsx;*.csv', Title: '请选择文件', MultiSelect: true }) //js三元表达式 Range('B3').Value2 = file ? file.join('\n') : '' if (!file) MsgBox('你没选中文件!') } function CommandButton2_Click() { let file = Range('B3').Value2.split('\n') let data = [] file.forEach((path, i) => { let wb = Workbooks.Open(path, 0) let arr = wb.ActiveSheet.Range('A1').CurrentRegion.Value2 wb.Close() //关闭工作簿 //因为只要保留1行表头,其他都要去掉表头才行,所以循环到第二个工作簿开始就要去掉表头 if (i > 0) arr.shift(); data.push(...arr) //合并数组 }) let wb = Workbooks.Add() //新建工作簿 let path = ThisWorkbook.Path //读取当前文件路径 //js短路求值, js字符串模板 let filename = ThisWorkbook.ActiveSheet.Range('B2').Value2 || `newfile-${Date.now()}` //把合并的数据全部写入到刚刚新建的工作簿里 wb.ActiveSheet.Range('A1').Resize(data.length, data[0].length).Value2 = data wb.SaveAs(`${path}/${filename}`) //保存文件 }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3