如何用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-:office:office" xmlns:x="urn:schemas-microsoft-:office:excel" xmlns="http://.w3./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内容的资料请关注狼蚁SEO其它相关文章!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程