wpsjs学习——获取单元格批注

news2024/11/17 16:15:50

1.获取第一个单元格的值:

wps.Application.ActiveSheet.Range('A1').Value2;

2.1.获取第一个单元格的批注:

wps.Application.ActiveSheet.Range('A1').Comment.Text();

<div class="global">
    获取表格信息
    <div class="divItem">
      <button style="margin: 3px" @click="onbuttonclick('fileName')">
        表格名称4
      </button>
      <button style="margin: 3px" @click="onbuttonclick('sheetName')">
        表格当前页签名称
      </button>
      <button style="margin: 3px" @click="onbuttonclick('bookCount')">
        页签数量
      </button>
      <button style="margin: 3px" @click="onbuttonclick('cellComent')">
        第一个单元格批注
      </button>
      <button style="margin: 3px" @click="onbuttonclick('getCellComent')">
        手动选中单元格获取批注
      </button>
      <button style="margin: 3px" @click="onbuttonclick('getCellValue')">
        获取选中区域的值
      </button>
      <button
        style="margin: 3px"
        @click="onbuttonclick('getSelectCellComment')"
      >
        获取选中区域的批注
      </button>
      <button style="margin: 3px" @click="onbuttonclick('getRowCount')">
        获取表格已使用行数
      </button>
      <button style="margin: 3px" @click="onbuttonclick('getColumnCount')">
        获取表格已使用列数
      </button>
      <button style="margin: 3px" @click="onbuttonclick('getSheetComment')">
        获取当前sheet页中所有批注信息
      </button>
      <button style="margin: 3px" @click="onbuttonclick('getAllComment')">
        获取所有sheet页中所有批注信息
      </button>
    </div>
    <hr />
    <div class="divItem">
      信息:<span>{{ info }}</span>
    </div>
  </div>
function onbuttonclick(idStr, param) {
  console.log(param);
  switch (idStr) {
    case "fileName": {
      return wps.Application.ActiveWorkbook.Name;
    }
    case "sheetName": {
      return wps.Application.ActiveWorkbook.ActiveSheet.Name;
    }
    case "bookCount": {
      return wps.Application.ActiveWorkbook.Worksheets.Count;
    }
    case "cellComent": {
      // 第一个单元格批注
      return wps.Application.Worksheets.Item("Sheet1")
        .Range("A1")
        .Comment.Text();
    }
    case "getCellComent": {
      let arr = wps.Application.InputBox(
        "选中单元格",
        undefined,
        undefined,
        undefined,
        undefined,
        undefined,
        undefined,
        8
      ).Comment;
      if (arr) {
        alert(`获取到的批注是:${arr.Text()}`);
      } else {
        alert("无效单元格或未设置批注信息");
      }
      break;
    }
    // 获取选中区域的值
    case "getCellValue": {
      let value = wps.Application.Selection.Value2;
      if (value) {
        if (typeof value == "string") {
          // alert('值:'+value);
          return `值: ${value}`;
        } else if (typeof value == "number") {
          // alert('值:'+value.join(','));
          return `值:${value}`;
        } else if (Array.isArray(value)) {
          return `值:${value.join(",")}`;
        }
      } else {
        // alert('未设值')
        return "未设值";
      }
      break;
    }
    // 获取选中区域的批注
    case "getSelectCellComment": {
      let str = getComment(wps.Application.Selection.Address());
      return `批注信息:${str}`;
    }
    // 获取总行数
    case "getRowCount": {
      let count = wps.Application.ActiveSheet.UsedRange.Rows.Count;
      return count;
    }
    // 获取总列数
    case "getColumnCount": {
      let count = wps.Application.ActiveSheet.UsedRange.Columns.Count;
      return count;
    }
    // 获取当前sheet页所有批注
    case "getSheetComment": {
      let str = getSheetComment();
      return str;
    }
    // 获取所有sheet页所有批注
    case "getAllComment": {
      let str = "";
      let count = wps.Application.Worksheets.Count;
      for (let i = 1; i <= count; i++) {
        str += `页签${
          wps.Application.Worksheets.Item(i).Name
        }:${getSheetComment(i)}\n`;
      }

      return str;
    }
  }
}

function getComment(addr) {
  console.log("选中区域:", wps.Application.Selection.Address());
  addr = addr.replaceAll("$", "");
  if (!addr.includes(",") && !addr.includes(":")) {
    let arr = wps.Application.ActiveWorkbook.ActiveSheet.Range(addr).Comment;
    if (arr) {
      // alert('获取到的批注是:'+arr.Text());
      return `获取到的批注是:${arr.Text()}`;
    } else {
      return "无效单元格或未设置批注信息";
      // alert('无效单元格或未设置批注信息');
    }
  } else {
    let list = addr.split(",");
    let str = "";
    list.forEach((item) => {
      if (!item.includes(":")) {
        let c = wps.Application.ActiveWorkbook.ActiveSheet.Range(item).Comment;
        if (c) {
          str += `${c.Text()} `;
        }
      } else {
        let aa = item.split(":");
        console.log("1", aa[1].substr(0, 1), "2", aa[0].substr(0, 1));
        let length =
          aa[1].substr(0, 1).charCodeAt() - aa[0].substr(0, 1).charCodeAt();
        let height =
          aa[1].substr(1, aa[1].length) - aa[0].substr(1, aa[0].length);
        console.log("len", length);
        console.log("hei", height);
        // 拼接成二维数组
        for (let i = 0; i <= height; i++) {
          for (let j = 0; j <= length; j++) {
            let char = String.fromCharCode(aa[0].charCodeAt() + j);
            let b = Number(aa[0].substr(1, aa[0].length)) + i;
            let c = wps.Application.ActiveWorkbook.ActiveSheet.Range(
              char + b
            ).Comment;
            console.log("char", char + b);
            if (c) {
              str += `${c.Text()} `;
            }
          }
        }
      }
    });
    return str;
  }
}
function getSheetComment(index) {
  let rowCount = 1;
  let columnCount = 1;
  let cells = null;
  let range = "";
  if (!index) {
    // 获取表格已用行和列
    rowCount = wps.Application.ActiveSheet.UsedRange.Rows.Count;
    columnCount = wps.Application.ActiveSheet.UsedRange.Columns.Count;
    cells = wps.Application.ActiveSheet.Cells;
    range = Application.ActiveSheet.UsedRange.Address(); // 获取表格数据范围,如'$C$3:$E$3'
  } else {
    rowCount = wps.Application.Worksheets.Item(index).UsedRange.Rows.Count;
    columnCount =
      wps.Application.Worksheets.Item(index).UsedRange.Columns.Count;
    cells = wps.Application.Worksheets.Item(index).Cells;
    range = wps.Application.Worksheets.Item(index).UsedRange.Address();
  }
  console.log(rowCount, columnCount);

  let str = "";
  let aa = range.replaceAll("$", "").split(":");
  console.log("1", aa[1].substr(0, 1), "2", aa[0].substr(0, 1));
  let length =
    aa[1].substr(0, 1).charCodeAt() - aa[0].substr(0, 1).charCodeAt();
  let height = aa[1].substr(1, aa[1].length) - aa[0].substr(1, aa[0].length);
  console.log("len", length);
  console.log("hei", height);
  // 拼接成二维数组,依次遍历每个单元格
  for (let i = 0; i <= height; i++) {
    for (let j = 0; j <= length; j++) {
      let char = String.fromCharCode(aa[0].charCodeAt() + j); // 获取对应的字母,如A
      let b = Number(aa[0].substr(1, aa[0].length)) + i; // 获取行
      let comment = null;
      if (index) {
        // 获取单元格批注
        comment = wps.Application.Worksheets.Item(index).Range(
          char + b
        ).Comment; // Range('A3')
      } else {
        comment = wps.Application.ActiveWorkbook.ActiveSheet.Range(
          char + b
        ).Comment;
      }
      console.log("char", char + b);
      if (comment) {
        str += `${comment.Text()} `;
        if (comment.Text().includes("RangeData")) {
          comment = JSON.parse(comment.Text().replaceAll("\n", ""));
          console.log("getRangeData", comment.RangeData);
          getRangeData(index, comment.RangeData);
        }
      }
    }
  }
  return str;
}

// 请求接口获取范围数据
function getRangeData(index, range) {
  console.log("获取范围数据", index, range);
  request
    .post("https://aa.com/api/common/getinfo")
    .then((res) => {
      console.log(`${range}:范围数据`, res);
      if (res && res.data) {
        setRangeData(index, range, res.data);
      }
    });
  // 设置默认数据
  let list = [
    [1, 2, 3, 4, 5, 6, 7],
    [1, 2, 3, 4, 5, 6, 7],
  ];
  setRangeData(index, range, list);
}

// 向序号页签表内range范围内插入数据
function setRangeData(index, range, data) {
  if (index) {
    wps.Application.Worksheets.Item(index).Range(range).Value2 = data;
  } else {
    // 当前sheet页
    wps.Application.ActiveSheet.Range(range).Value2 = data;
  }
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1359354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vr眼镜和AR眼镜的区别有哪些?哪些产品可以支持VR应用?

vr眼镜怎么连接手机 要将VR眼镜连接到手机上&#xff0c;您可以按照以下步骤进行&#xff1a; 1. 确保您的手机支持VR应用程序&#xff1a;首先&#xff0c;确保您的手机具备运行VR应用程序的硬件和软件条件。一些VR应用程序可能对设备有特定的要求&#xff0c;如处理器性能、操…

x-cmd pkg | pdfcpu - 强大的 PDF 处理工具

目录 简介首次用户多功能支持性能表现安全的加密处理进一步阅读 简介 pdfcpu 是一个用 Go 编写的 PDF 处理库。同时它也提供 API 和 CLI。pdfcpu 提供了丰富的 PDF 操作功能&#xff0c;用户还能自己编写配置文件&#xff0c;用来管理和使用各种自定义字体并存储有效的默认配置…

VR与数字孪生:共同构筑未来的虚拟世界

随着科技的不断发展&#xff0c;数字孪生和VR已经成为当今热门的科技话题。作为山海鲸可视化软件的开发者&#xff0c;我们对这两者都有深入的了解。在此&#xff0c;我们将详细探讨数字孪生与VR的区别和联系。 首先&#xff0c;数字孪生&#xff08;Digital Twin&#xff09;…

洛谷——P1983 [NOIP2013 普及组] 车站分级(拓扑排序、c++)

文章目录 一、题目[NOIP2013 普及组] 车站分级题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示 二、题解基本思路&#xff1a;代码 一、题目 [NOIP2013 普及组] 车站分级 题目背景 NOIP2013 普及组 T4 题目描述 一条单…

美年大健康黄伟:从选型到迁移,一个月升级核心数据库

核心生产系统的数据库&#xff0c;从接到替换需求到完成分布式升级&#xff0c;需要多久&#xff1f;一个月&#xff0c;这是美年大健康的回答。一个月集中调配各种资源&#xff0c;美年大健康完成了应用程序基本零改造的平滑迁移&#xff0c;新数据库在成本更低的前提下&#…

【Android】自定义View组件,并实现在 Compose、Kotlin、Xml 中调用

从事 Android 开发以来&#xff0c;很少有过自定义 View 的相关开发需求&#xff0c;大部分 UI 都是可以集成某些官方组件&#xff0c;在组件的基础上完成能够大大缩短开发时间。但今天我要讲的是&#xff1a;如何使用 Android 开发一个Compose、Xml都可以调用的组件&#xff1…

Vue中break关键字

Change() {//每次触发该事件&#xff0c;都要讲data重新赋值一次this.data JSON.parse(JSON.stringify(this.data1));// 根据选中的等级更新数据switch (this.selectedlevel) {case 1:// 更新数据为一级数据this.data this.data.filter(item > item.level "1"…

架构(1)

目录 1.如何理解架构的演进&#xff1f; 2.如何理解架构的服务化趋势&#xff1f; 3.架构中有哪些技术点&#xff1f; 4.谈谈架构中的缓存应用&#xff1f; 5.在开发中缓存具体如何实现&#xff1f; 1.如何理解架构的演进&#xff1f; 初始阶段的网站架构应用服务和数据服…

2024年1月6日 十二生肖 今日运势

小运播报&#xff1a;2024年1月6日&#xff0c;星期六&#xff0c;农历十一月廿五 &#xff08;癸卯年乙丑月己巳日&#xff09;&#xff0c;法定节假日。 红榜生肖&#xff1a;牛、猴、鸡 需要注意&#xff1a;鼠、虎、猪 喜神方位&#xff1a;东北方 财神方位&#xff1a…

【2024最新版】Win11基础配置操作(磁盘分区、修改各种默认存储位置、安装软件操作)【释放C盘空间】

文章目录 一、硬盘分区0. 磁盘管理1. 压缩卷2. 新建简单卷向导 二、修改默认存储位置1. 保持新内容的地方a. 位置b. 操作 2. 快速访问六件套a. 位置b. 操作 三、安装软件0. 应用商店设置a. 设置中心b. 修改下载设置 1. 微信电脑版设置a. 下载b. 安装c. 聊天记录迁移与备份d. 存…

MySQL-DCL

DCL是数据控制语言&#xff0c;用来管理数据库用户&#xff0c;控制数据库的访问权限。 管理用户&#xff1a;管理哪些用户可以访问哪些数据库 1.查询用户 USE mysql; SELECT * FROM user; 注意&#xff1a; MySQL中用户信息和用户的权限信息都是记录在mysql数据库的user表中的…

Vue入门一(前端发展史|Vue介绍|Vue插值语法|Vue指令|style与class使用|条件渲染)

文章目录 一、前端的发展史二、Vue介绍 和 基本使用1) Vue介绍2) Vue特点3) M-V-VM思想1.MVVM介绍2.MVVM的特性3.MVVM逻辑 4) 组件化开发、单页面开发组件化开发单页面开发 5) 引入方式6) 补充解释型的语言是需要解释器的 nodejs&#xff1a;一门后端语言7) 快速使用 三、Vue之…

力扣1944.队列中可以看到的人数--单调栈

思路&#xff1a; 由题知一个人能 看到 他右边另一个人的条件是这两人之间的所有人都比他们两人 矮 &#xff0c;也就是说&#xff0c;在自己右边第一个比自己高的人后面的人就肯定看不到了那么只需要找到右边第一个比自己高的人与自己之间的所有满足要求的人就行了&#xff0…

PyTorch|一次画一批图像

想想这样一个场景&#xff0c;我们训练了一个神经网络&#xff0c;输入一些信息&#xff0c;这个网络可以根据信息为我们生成相关图片。 这些图片并不是一张&#xff0c;而是多张&#xff0c;我们想把这些图片一次全部显示出来&#xff0c;而不是一张一张的显示&#xff08;这…

CSS 缩小旋转动画

<template><div class="container" @mouseenter="startAnimation" @mouseleave="stopAnimation"><!-- 旋方块 --><div class="box" :class="{ rotate-scale-down: isAnimating }"><!-- 元素内容…

Linux 进程(十) 进程替换

用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec*函数以执行另一个程序。当进程调用一种exec*函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。调用exec*并不创建新进程,所以调用exec*前…

stable diffusion 人物高级提示词(四)朝向、画面范围、远近、焦距、机位、拍摄角度

一、朝向 英文中文front view正面Profile view / from side侧面half-front view半正面Back view背面(quarter front view:1.5)四分之一正面 prompt/英文中文翻译looking at the camera看向镜头facing the camera面对镜头turned towards the camera转向镜头looking away from …

c语言题目之统计二级制数中1的个数

文章目录 题目一、方法1二、方法2三&#xff0c;方法3总结 题目 统计二进制数中1的个数 输入一行&#xff0c;输出一行 输入&#xff1a; 输入一个整数 输出&#xff1a; 输出存储在内存中二进制的1的个数 一、方法1 之前的文章中&#xff0c;小编写了有关于内存在二进制中的存…

基于YOLOv7算法的高精度实时安全背心目标检测识别系统(PyTorch+Pyside6+YOLOv7)

摘要&#xff1a;基于YOLOv7算法的高精度实时安全背心目标检测系统可用于日常生活中检测与定位安全背心&#xff0c;此系统可完成对输入图片、视频、文件夹以及摄像头方式的目标检测与识别&#xff0c;同时本系统还支持检测结果可视化与导出。本系统采用YOLOv7目标检测算法来训…

flutter 五:MaterialApp

MaterialApp const MaterialApp({super.key,this.navigatorKey, //导航键this.scaffoldMessengerKey, //scaffold管理this.home, //首页Map<String, WidgetBuilder> this.routes const <String, WidgetBuilder>{}, //路由this.initialRoute, //初始路由th…