wps js宏获取工作簿、工作表、单元格的值、链接转图片、单元格区域数据转二维数组、保存工作簿的常用Excel操作

这篇具有很好参考价值的文章主要介绍了wps js宏获取工作簿、工作表、单元格的值、链接转图片、单元格区域数据转二维数组、保存工作簿的常用Excel操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        首先说明js宏的全称是JavaScript for WPS,JavaScript语言可以简称js,通过名称知道js宏的本质是用JS语言调用WPS提供的Application对象模型,要求必须有js基础,跳过js直接学js宏会走很多弯路!!!

        本篇介绍js操作Excel对象模型的常用方法,助你从vba转战js,这里用的是WPS Office 2022 12980版本

向单元格写入二维数组数据、另存为xlsx工作簿文件、另存为txt文本文件

Resize(行数,列数),以某个单元格为起点扩展区域

arr变量的数据类型为二维数组,其中arr.length表示一维长度,arr[0].length表示二维长度

Env对象主要用于取系统环境基本信息,这个对象目前提供了取用户目录、临时目录等相关信息,后续可能会根据实际需求不断扩充,此对象需要WPS更新到最新版本

Env.GetDesktopPath(),获取用户桌面目录


function export_file() {
    const arr = [
        ['名字', '年龄']
        , ['清风', 18]
        , ['若雨', 22]
        , ['猫的树', 27]
        , ['童颜', 25]
        , ['茶季', 19]
    ]
    Range('A1').Resize(arr.length, arr[0].length).Value2 = arr //向A1:B6单元格区域写入二维数组数据

	//console.log(Env.GetDesktopPath()) //打印用户桌面目录
    let path = (ThisWorkbook.Path || Application.DefaultFilePath) + '\\test' //设置文件保存路径
    
    ActiveSheet.Copy() //复制工作表,如果Copy方法没有参数则默认新建一个工作簿
    Application.ActiveWorkbook.SaveAs(path, 20) //另存为txt文件,XlFileFormat枚举文件格式:xlTextWindows的值为20
    Application.ActiveWorkbook.SaveAs(path, 51) //另存为xlsx文件,XlFileFormat枚举文件格式:xlWorkbookDefault的值为51

    alert(`文件路径在 \n${path}.txt \n${path}.xlsx`) //js模板字符串用法
}
wps js宏获取工作簿、工作表、单元格的值、链接转图片、单元格区域数据转二维数组、保存工作簿的常用Excel操作,Excel JS,wps,javascript,excel,Powered by 金山文档
打开指定路径的工作簿、导入txt文本文件

注意直接在代码写文件路径,要转义反斜杠\

例 D:\test.xlsx 要写成 D:\\test.xlsx 或者 D:/test.xlsx


//打开工作簿,需要完整路径,返回一个代表打开的工作簿的Workbook对象
let wb1 = Workbooks.Open('D:\\test.xlsx')

//获取已经打开的工作簿对象,工作簿名称或全路径都可以
let wb2 = Workbooks('test.xlsx')
let wb3 = Workbooks('D:\\test.xlsx')

//导入txt文本文件,如何分列数据请参考官方文档的Workbooks.OpenText方法
Workbooks.OpenText('D:\\test.txt')
遍历指定文件夹下的文件

function traverse_files() {
    let folder = 'D:\\test\\' + '*.xlsx' //需要遍历的文件夹和文件后缀名
    let files = Dir(folder)
    while (files) {
        console.log(files)
        files = Dir()
    }
}
获取工作簿对象、工作表对象

let wb = ThisWorkbook //获取当前代码所在的工作簿对象
let sht1 = wb.ActiveSheet //获取当前显示的工作表(活动工作表)
let sht2 = wb.Sheets('Sheet1') //获取当前名为Sheet1的工作表
获取单元格的值

//直接用Range对象取值要尤其注意工作表指向,新手很容易出错
let val1 = Range('A1').Value2
let val2 = Range('A1').Value()

//最好指定工作表对象,不容易出错
let wb = ThisWorkbook
let sht = wb.ActiveSheet
let val3 = sht.Range('A1').Value2
获取A1:B6单元格区域的值,并将数据写入D1:E6单元格区域

let sht = ThisWorkbook.ActiveSheet
let arr = sht.Range('A1:B6').Value2 //获取A1:B6单元格区域的值,获取的数据类型为二维数组
sht.Range('D1:E6').Value2 = arr //将值写入D1:E6单元格区域
wps js宏获取工作簿、工作表、单元格的值、链接转图片、单元格区域数据转二维数组、保存工作簿的常用Excel操作,Excel JS,wps,javascript,excel,Powered by 金山文档
选中以A1单元格为起点的连续非空白区域,复制到D1单元格

let sht = ThisWorkbook.ActiveSheet
sht.Range('A1').CurrentRegion.Select() //选中A1:B6单元格区域
Selection.Copy(sht.Range('D1')) //将选中的区域复制到D1单元格
wps js宏获取工作簿、工作表、单元格的值、链接转图片、单元格区域数据转二维数组、保存工作簿的常用Excel操作,Excel JS,wps,javascript,excel,Powered by 金山文档
网络请求

fetch方法需要更新最新版本的WPS,否则不能使用

function request_bilibili() {
    let url = 'https://api.bilibili.com/x/v3/fav/resource/list?media_id=1017007045&pn=1&ps=20&order=mtime&type=0&tid=0&platform=web&jsonp=jsonp'
    fetch(url).then(
        res => res.json().then(obj => {
            list = obj.data.medias,              //视频信息在medias属性
                arr = [['视频封面', 'up主', '视频标题', '视频简介', '视频链接']]; //声明二维数组,设置表头

            //JavaScript ES5数组迭代方法
            list.forEach(i => arr.push([
                i.cover + '@320w_200h_1c_!web-space-favlist-video.webp',
                i.upper.name,
                i.title,
                i.intro,
                'https://www.bilibili.com/video/' + i.bvid
            ]));

            //写入数据
            let ros = arr.length;
            Range('A1').Resize(ros, arr[0].length).Value2 = arr;
            Range('A2:A' + ros).Value2 = '';

            //设置工作表样式
            Rows(1).RowHeight = 30;
            Rows('2:' + ros).RowHeight = 60;
            Columns('A:B').ColumnWidth = 15;
            Columns('C:E').ColumnWidth = 32;

            //插入视频封面图片
            arr.forEach((i, o) => {
                if (o == 0) return;
                let link = i[0];
                let top = o * 60 - 26;
                ActiveSheet.Shapes.AddPicture(link, true, true, 4, top, 86, 54)
            })
        })


    )
}

wps js宏获取工作簿、工作表、单元格的值、链接转图片、单元格区域数据转二维数组、保存工作簿的常用Excel操作,Excel JS,wps,javascript,excel,Powered by 金山文档

链接转图片方法、生成条形码图片

express.AddPicture(链接或路径, 是否链接文件, 是否与文档保存, Left, Top, 图片宽度, 图片高度)

以生成条形码图片为例,这里用bwip-js在线api演示效果


let sht = ThisWorkbook.ActiveSheet
let link = 'https://bwipjs-api.metafloor.com/?bcid=code128&text=200534231&includetext=true&textsize=12&height=9'
let pic = sht.Shapes.AddPicture(link, true, true, 150, 20, 120, 50)
wps js宏获取工作簿、工作表、单元格的值、链接转图片、单元格区域数据转二维数组、保存工作簿的常用Excel操作,Excel JS,wps,javascript,excel,Powered by 金山文档
InputBox对象获取用户输入的信息、行号、列号、用户选择的单元格区域数据

function inputbox_test() {
    let tip = ['请输入名字', '请选择行', '请选择列', '请选择数据区域']
    let myName = InputBox(tip[0])
    alert('你输入的名字是 ' + myName)

    let ros = Application.InputBox(tip[1], undefined, undefined, undefined, undefined, undefined, undefined, 8).Row
    alert('你选择的行号是 ' + ros)
	
	//Application.InputBox参数用对象的方式传入,代码就不用写这么长了
    let col = Application.InputBox({Prompt: tip[2], Type: 8}).Column
    alert('你选择的列号是 ' + col)

    let arr = Application.InputBox({Prompt: tip[3], Type: 8}).Value2
    if (!arr) return alert('未能识别数据区域') //!逻辑非

    const data = arr.map(i => i.join(',')) //map方法数组迭代
    alert('你选择的数据是\n' + data.join('\n'))
}
wps js宏获取工作簿、工作表、单元格的值、链接转图片、单元格区域数据转二维数组、保存工作簿的常用Excel操作,Excel JS,wps,javascript,excel,Powered by 金山文档
弹出YesNo选择窗口

let yesno = MsgBox('Yes or No?', jsYesNo) //用户选择是,返回的值是6
wps js宏获取工作簿、工作表、单元格的值、链接转图片、单元格区域数据转二维数组、保存工作簿的常用Excel操作,Excel JS,wps,javascript,excel,Powered by 金山文档
将以A1单元格为起点的连续非空白区域转二维数组(类似VBA的CurrentRegion属性)

let sht = ThisWorkbook.ActiveSheet
let ron = sht.Range('A1').CurrentRegion.Value2
创建一个新的工作簿

let wb = Workbooks.Add()
将A列名字数据批量另存工作簿

function save_workbook() {
    let sht = ThisWorkbook.ActiveSheet
        , data = sht.Range('A1').CurrentRegion.Value2
        , th = data[0] //获取表头
        , path = (ThisWorkbook.Path || Application.DefaultFilePath) + '\\'

    //forEach数组迭代方法
    data.forEach((item, i) => {
        if (i == 0) return //忽略第一行数据
        let wb = Workbooks.Add()
            , sht = wb.ActiveSheet
            , filePath = path + item[0].replace(/[\\/:*?\"<>|]/g, '-') //文件名称不得有\/:*?"<>|字符,用正则将特殊字符替换成-

        sht.Range('A1:B2').Value2 = [th, item]
        wb.SaveAs(filePath, 51)
        wb.Close() //关闭工作簿
    })
    alert('完成,文件路径在\n' + path)
}

或者可以把代码复制到模块里逐句执行查看效果


function testJS() {
    const arr = [['名字', '年龄'], ['清风', 18], ['若雨', 22], ['猫的树', 27], ['童颜', 25], ['茶季', 19]]

    //获取当前代码工作簿的活动工作表名称
    let sht = ThisWorkbook.ActiveSheet
    console.log(sht.Name)

    //向A1:B6单元格区域写入二维数组数据
    sht.Range('A1').Resize(6, 2).Value2 = arr

    //获取A1单元格的值
    let rng = sht.Range('A1').Value2
    console.log(rng)

    //获取A1:B6单元格区域的值,并将数据写入D1:E6区域
    let arrData = sht.Range('A1:B6').Value2
    sht.Range('D1:E6').Value2 = arrData

    //选中以空行与空列的组合为边界的单元格区域,选中A1:B6区域的值复制到G1单元格
    sht.Range('A1').CurrentRegion.Select()
    Selection.Copy(sht.Range('G1'))

    //链接转图片,以生成条形码图片为例
    let link = 'https://bwipjs-api.metafloor.com/?bcid=code128&text=200534231&includetext=true&textsize=12&height=9'
    sht.Shapes.AddPicture(link, true, true, 20, 100, 120, 50)

    //InputBox对象
    let tip = ['请输入名字', '请选择行', '请选择列', '请选择数据区域']
    let myName = InputBox(tip[0])
    console.log('你输入的名字是 ' + myName)

    let ros = Application.InputBox({Prompt: tip[1], Type: 8}).Row
    console.log('你选择的行号是 ' + ros)

    let col = Application.InputBox({Prompt: tip[2], Type: 8}).Column
    console.log('你选择的列号是 ' + col)

    let selectData = Application.InputBox({Prompt: tip[3], Type: 8}).Value2
    if (selectData) {
        const mydata = selectData.map(i => i.join(','))
        console.log('你选择的数据是\n' + mydata.join('\n'))
    } else {
        console.log('未能识别数据区域')
    }

    //弹出让用户选择:‘是’或‘否’的窗口
    let yesno = MsgBox('Yes or No?', jsYesNo) //用户选择是,返回的值是6
    console.log(yesno)

    //获取以空行与空列的组合为边界的区域并转化为数组
    let data = sht.Range('A1').CurrentRegion.Value2
    console.log(data.join())

    //获取表头
    let th = data[0]
    console.log(th.join())

    //设置文件保存路径
    //console.log(Env.GetDesktopPath()) //打印用户桌面目录,Env对象要更新WPS版本,版本太低用不了
    let path = (ThisWorkbook.Path || Application.DefaultFilePath) + '\\'
    console.log(path)

    //forEach数组迭代
    data.forEach((item, i) => {
        if (i == 0) return //忽略第一行数据
        let wb = Workbooks.Add()
            , sht = wb.ActiveSheet
            , filePath = path + item[0].replace(/[\\/:*?\"<>|]/g, '-') //文件名称不得有\/:*?"<>|字符,用正则将特殊字符替换成-

        console.log(filePath)

        sht.Range('A1:B2').Value2 = [th, item]
        wb.SaveAs(filePath, 51)
        wb.Close() //关闭工作簿
    })
    console.log('完成,文件路径在\n' + path)

    //遍历文件
    let folder = path + '*.xlsx'
    let files = Dir(folder)
    while (files) {
        console.log(files)
        files = Dir()
    }
}

最后学习JavaScript 语言推荐用w3school,打好基础才能更好利用JS宏摸鱼文章来源地址https://www.toymoban.com/news/detail-530491.html

wps js宏获取工作簿、工作表、单元格的值、链接转图片、单元格区域数据转二维数组、保存工作簿的常用Excel操作,Excel JS,wps,javascript,excel,Powered by 金山文档

到了这里,关于wps js宏获取工作簿、工作表、单元格的值、链接转图片、单元格区域数据转二维数组、保存工作簿的常用Excel操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WPS JS宏示例-批量添加链接

    📢作者: 小小明-代码实体 📢博客主页:https://blog.csdn.net/as604049322 📢欢迎点赞 👍 收藏 ⭐留言 📝 欢迎讨论! 原始数据如下: 共1.2万多条数据,现在我们需要给来源网址添加可以点击到目标网址的链接,并通过HS编码生成详情页链接。 最终生成效果如下: 这个案例用P

    2024年02月05日
    浏览(45)
  • 如何获取data中的值?如何取出,存储数据?跳转外部链接?与非本机联调?修改头部标题?动态更改样式?动态获取设备宽高?(微信小程序)

    工具:微信开发者工具 1.如何获取data中的值? 使用 this.data. 2.如何修改data中的值?使用 this.setData({key: value}),其中key为data中修改的数据,value为要修改的值 3.如何存储数据? 1.简单数据wx.setStorage({ key: ‘key’,data: value} 2.对象类数据wx.setStorage({ key: ‘key’,data: {}} 4.跳转外部

    2024年02月10日
    浏览(66)
  • 关于HSV了解这些就够了,python-opencv获取图片精确hsv的值

    有时候想要获得一幅图片里面 某个物体的精确的hsv的值,需要怎么做呢? 在输出的hsv的图像中,用鼠标左键点击,就可以知道那个点的精确的hsv的值     RGB 是我们接触最多的颜色空间,由三个通道表示一幅图像,分别为红色(R),绿色(G)和蓝色(B)。这三种颜色的不同组合可以

    2024年02月05日
    浏览(54)
  • 微信小程序怎么通过图片链接获取图片宽高比(适合在下载图片前获取宽高比)

    在微信小程序中,可以通过 wx.getImageInfo 来获取图片链接的宽高信息: getImageInfo 是一个异步API,它会去下载图片并获取到图片的宽高信息。 主要步骤: 1. 通过 wx.getImageInfo 获取图片宽高 2. 在 success 回调中可以拿到 width 和 height 3. 将 width 除以 height 即可计算出宽高比 ratio 注意: -

    2024年02月03日
    浏览(78)
  • fabric.js 组件 图片上传裁剪并进行自定义区域标记

    目录 0. 前言 1. 安装fabric与引入 2. fabric组件的使用 3. 属性相关设置 4. 初始化加载 4. 方法 5. 全代码 利用fabric组件,实现图片上传、图片”裁剪“、自定义的区域标记一系列操作 先放一张效果图吧👇 我用的是全局引入方式,视情况调整  先放一个fabric.js API地址☞Api | Fabric中

    2024年01月22日
    浏览(91)
  • VBA(13)单元格的属性(三)附单元格颜色图/FIND函数

    一、单元格的常用属性 Sub x1()     Range(\\\"b10\\\") = Range(\\\"c2\\\").Value \\\'返回实际的值     Range(\\\"b11\\\") = Range(\\\"c2\\\").Text \\\'返回相示的值     Range(\\\"b12\\\") = \\\"\\\" Range(\\\"c2\\\").Formula \\\'返回一个C2的文本公式 End Sub Sub x2() \\\'单元格的地址     With Range(\\\"b2\\\").CurrentRegion         [b12] = .Address \\\'默认等对绝对引用地

    2024年02月05日
    浏览(37)
  • js判断一个链接是图片还是视频

    要判断一个链接是图片还是视频,可以通过链接的文件扩展名来进行判断。常见的图片文件扩展名包括 .jpg 、 .jpeg 、 .png 、 .gif 等,而常见的视频文件扩展名包括 .mp4 、 .avi 、 .mov 、 .wmv 等。 你可以使用JavaScript中的字符串操作方法来提取链接的文件扩展名,并进行判断。以

    2024年02月05日
    浏览(46)
  • elementUI中table单元格的合并,通用版

    之前曾发布过一篇文章关于单元格合并问题,但是通用性很差,切代码较长不美观,改进之后分享给大家,我这里使用的是vue3,vue2的小伙伴稍微改动一下即可 如图:合并前  想要效果:  话不多说直接上代码教大家!!! 1.定义两个变量 2.定义编写合并逻辑的方法 3.调用 4

    2024年02月15日
    浏览(52)
  • 前端:运用html+css+js模仿京东上商品图片区域放大特效

    1. 前言 最近在网页端浏览京东上的商品时,觉得上面的那张gif图片上实现的特效不错,于是自己打算使用html+css+js技术来实现一下上述特效效果,我的实效果如下: 2. 前端界面 主要使用到浮动、绝对定位、相对定位等知识,不了解这部分知识点的读者可以先去了解了解,再

    2024年02月16日
    浏览(56)
  • Python解析Excel及检测合并单元格的方法

    Python解析扩展名为 .xlsx 的方法: 1. 导入 openpyxl模块 2. 导入Excel表格文件 使用 load_workbook() 方法读取Excel文件,该方法返回一个工作簿对象。 load_workbook()方法只能读取已有的Excel表格文件,无法创建新的Excel表格。 3. 获取Sheet工作表 4. 获取最大行和列 5. 获取单元格的值 以该表

    2024年02月16日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包