wps js宏编辑器案例3-工作簿和工作表操作

本文介绍了如何利用WPSJS宏编辑器处理Excel数据,通过遍历‘汇总’Sheet,提取各分店名称,创建新工作簿并将对应收银信息写入。重点涉及工作表复制、工作簿另存与关闭,以及Range.findNext方法的应用。案例代码已上传,供读者下载参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文通过一个连锁门店每天营业额按门店名称进行拆分的案例,讲述wps js宏编辑器中工作簿、工作表和Range的相关操作,比如:工作表的复制,工作簿另存&关闭,Range.findNext使用注意实现等,案例已上传到gitee,文章最后有案例下载地址。

1、案例说明

1)“汇总”Sheet,各分店的日销售额

在这里插入图片描述

2)“缴款单模板”Sheet,门店缴款单模板

在这里插入图片描述
每个店铺产生一个新的excel文件,收银员收银信息逐条写入

2、基本思路

  • 遍历“汇总”Sheet工作表,对分店名称进行去重,得到所有分店名称的数组
  • 遍历分店名称数组,创建新的工作簿,工作簿名称为分店名称
    • 遍历汇总表,查找分店名称都是“数组”中的分店名称时,将该分店的收银员姓名、编号、现金等写入新建的工作簿
  • 保存并关闭工作簿

接下来看下代码如何实现。

3、代码实现

function splitShop() {
	let cwb = ActiveWorkbook;
	let path = cwb.Path;
	let sheet1 = Application.Worksheets.Item("汇总"), sheet2 = Application.Worksheets.Item("缴款单模板");
	let rValues = sheet1.Range(sheet1.Range("C2"), sheet1.Range("C2").End(xlDown)).Value2;
	let columns = sheet1.Columns("C");
	let shopNames = [];
	for (v of rValues) {
		let [shopName] = v;
		if (! shopNames.includes(shopName)) shopNames.push(shopName);
	}
	
	for (shopName of shopNames) {
		sheet2.Copy();
		let wb = ActiveWorkbook, sheet = wb.Worksheets.Item(1);
		
		// 设置所属门店
		sheet.Range("J3").Value2 = shopName;
		let f = columns.Find(shopName);
		if (f != null) {
			// 设置门店编码,文本
			sheet.Range("O3").NumberFormat = "@";
			sheet.Range("O3").Value2 = f.Offset(0, -1).Value2;
			
			// 设置日期,yyyy/m/d h:mm
			sheet.Range("J4").NumberFormat = "yyyy/m/d h:mm";
			sheet.Range("J4").Value2 = f.Offset(0, 1).Value2;
			
			// 设置行索引,从6行开始写数据
			let rowIndex = 6;
			let firstAddress = f.Address();
			do {
				sheet.Range("I" + rowIndex).Value2 = f.Offset(0, 2).Value2;
				sheet.Range("J" + rowIndex).Value2 = f.Offset(0, 3).Value2;
				sheet.Range("K" + rowIndex).Value2 = f.Offset(0, 4).Value2;
				sheet.Range("L" + rowIndex).Value2 = f.Offset(0, 5).Value2;
				sheet.Range("M" + rowIndex).Value2 = f.Offset(0, 6).Value2;
				sheet.Range("N" + rowIndex).Value2 = f.Offset(0, 7).Value2;
				sheet.Range("O" + rowIndex).Value2 = f.Offset(0, 8).Value2;
				sheet.Range("P" + rowIndex).Value2 = f.Offset(0, 9).Value2;
				f = columns.FindNext(f);
				rowIndex++;
			} while (f != null && f.Address() != firstAddress)
		}
		
		wb.SaveAs(path + "\\" + shopName + ".xlsx");
		wb.Close(true);
	}
}

代码说明:

  • sheet2.Copy(),没有任何参数时,会产生一个新的工作簿,并设置为当前工作簿;
  • f = columns.FindNext(f),当找到最后一个时会跳到第一个去,因此不进行是否第一个判断时,会死循环,一直查找下去,务必注意;
  • b.SaveAs(path + “\” + shopName + “.xlsx”),地址\转义处理

案例下载地址:案例3_工作簿操作_门店处理.xlsm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值