WPS JS宏删除、导入、导出Sheet里的图片

今天分享WPS表格中的图片操作方法,三个问题:1.如何删除表中所有图片;2.如何将表中所有图片批量导出到指定文件夹并重新命名;3.如何将指定路径下的图片批量导入表中,并置于何时的位置。

 一、如何删除表中所有图片

function deletePic(){
	// 获取当前Sheet表对象
	var app = Application.Application,
		acSh = app.ActiveSheet;
	// 循环遍历当前Sheet表中的所有图形
	for (let pic of acSh.Shapes){
		// 如果当前为"图片"、"==13",执行删除操作
		if (pic.Type == msoPicture){
            // Shape.TopLeftCell,代表位于对象左上角下方的单元格
			var r = pic.TopLeftCell.Row,
				c = pic.TopLeftCell.Column;
			
			pic.Delete();
			Console.log(`${r}行${c}列图片删除成功@SMFY`);
		}
	}
}

运行结果如下:

处理前:

处理后:


二、如何将表中所有图片批量导出到指定文件夹并重新命名

function SaveAsPic(){
	var app = Application.Application,
		acSh = app.ActiveSheet;
	
	// 输入框,用来自定义存图文件夹的名称
	var folderName = app.InputBox("Enter a folder name to save picture"),
		reg = new RegExp('[\\\\/:*?\"<>|]');
	
	// 如果文件夹的名称不规范,给出错误提示
	if(folderName == "" || folderName == false || reg.test(folderName) == true){
		MsgBox("1.文件名不能为空\n\n2.上传的文件名不能包含【\\\\/:*?\"<>|】这些非法字符\n\n建议:修改后重新上传!",jsCritical,"错误提示:")
	}
	else{
		// 新建一个文件夹用来存导出的图片
		var res = NewFolder(ThisWorkbook.Path, folderName);
		Console.log(res); // 新建文件夹结果
		
		for (let pic of acSh.Shapes){
			if (pic.Type == msoPicture){
				var r = pic.TopLeftCell.Row,
					c = pic.TopLeftCell.Column,
					picName = `${r}行${c}列${new Date().getTime()}`;// 注意重名问题,重名会被覆盖
				var picPathName = `${ThisWorkbook.Path}\\${folderName}\\${picName}.jpg`;
				
				pic.Copy();
				pic.SaveAsPicture(picPathName);
			}
		}
	}
}

NewFolder()函数传送门:新建文件夹

运行结果如下:


三、如何将指定路径下的图片批量导入表中,并置于合适的位置

占位,//TODO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值