我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何用JS解析剪切板里的excel内容

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何用JS解析剪切板里的excel内容

前言

这次记录的是昨晚一个想法:把excel内容复制到剪切板并转成自己想要的json格式,核心是要把excel内容转json,这部分主要看excel的格式和json如何业务的映射,不展开。倒是通过实践,收获了剪切板的一些知识点。

注:因为只是为了自己的小工具实现,不考虑兼容,在chrome下实践

整个步骤是:

  • 从一封有内容的excel里,选中内容,ctrl+c复制到剪切板(刚好我的内容就是整张表,ctrl+A就可以选中内容)
  • 粘贴到web页面,js监听paste事件,从剪切板对象里获得复制的excel内容(含格式)
  • 将内容解析处理成自己的格式【扩展补充】

这里主要可以分为三点:

1. 粘贴事件和剪切板


document.addEventListener('paste', event => {
    // event里的clipboardData对象
   console.log(event.clipboardData)
})

粘贴事件触发时,可以从event里获取到clipboardData

不过里面使用时还用了window.clipboardData,我在chrome和codepen下试验,都没获取到内容。

2. 剪切板里的内容格式

在上一部分的代码打印到控制台,会有个疑惑,就是控制台打出来一个DataTransfer对象,但其实这个对象在控制台展开时属性不是没有值就是空数组,很懵逼。

直到我往里面console属性内容,才找到。

在这个对象里,getData是它的常用方法,用于获取数据内容,它需要接受一个DOMString的参数。

一般常用的是粘贴纯文本,纯文本 getData('text') 即可获得。

但我要的是excel的格式,一开始并不知道excel是啥格式,但是从excel拷贝再粘贴回excel,格式依然保留,所以想着剪切板应该还保留原内容的格式,所以就尝试下。

通过遍历打印出DataTransfer对象的types属性,可以能知晓


document.addEventListener('paste', event => {
      event.clipboardData.types.map(type=>{console.log(type)})
})

types有三个值:text/plain,text/html,Files

于是用types的‘text/html',和getData一试,果然拿到了带格式的内容,实际上是一段html代码字符串
大致如下


<html  xmlns:o="urn:schemas-microsoft-com:office:office"  xmlns:x="urn:schemas-microsoft-com:office:excel"  xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta  http-equiv=Content-Type  content="text/html; charset=utf-8">
<style>
...
<table>
...

通过观察得知,想要的内容就是html代码里的table,接下来要转格式就好办了,搞定解析html字符串,用选择器的方式获取单元格内容就差不多了。

3. 如何解析html字符串

这里着实耗费了我不少时间,后面找到了DOMParser,原来原生就支持解析html字符串>>

通过 (new DOMParser()).parseFromString,将字符串转为DOM


const html = event.clipboardData.getData('text/html');
const $doc = new DOMParser().parseFromString(html,'text/html');
// 加载所有的行
const $trs = Array.from($doc.querySelectorAll('table tr'));

于是就可以愉快的querySelectorAll了。

以上就是如何用JS解析剪切板里的excel内容的详细内容,更多关于JS解析剪切板里的excel内容的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何用JS解析剪切板里的excel内容

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何用VBS查看或获得剪切板内容

本篇内容主要讲解“如何用VBS查看或获得剪切板内容”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用VBS查看或获得剪切板内容”吧!复制代码 代码如下:Set objHTML=CreateOb
2023-06-08

vue中如何实现复制内容到剪切板详解

有些业务需求需要点击按钮复制链接,下面这篇文章主要给大家介绍了关于vue中如何实现复制内容到剪切板的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2022-11-13

Feign远程调用参数里的内容丢失如何解决

这篇文章主要讲解了“Feign远程调用参数里的内容丢失如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Feign远程调用参数里的内容丢失如何解决”吧!Feign远程调用参数里面内容丢失
2023-06-29

编程热搜

目录