今天分享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
标签:Sheet,app,pic,WPS,图片,文件夹,var,JS,folderName From: https://blog.csdn.net/RAN__CSDN/article/details/139536723