亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

如何用JS解析剪切板里的excel內(nèi)容

瀏覽:82日期:2022-06-19 08:55:36
前言

這次記錄的是昨晚一個(gè)想法:把excel內(nèi)容復(fù)制到剪切板并轉(zhuǎn)成自己想要的json格式,核心是要把excel內(nèi)容轉(zhuǎn)json,這部分主要看excel的格式和json如何業(yè)務(wù)的映射,不展開。倒是通過實(shí)踐,收獲了剪切板的一些知識點(diǎn)。

注:因?yàn)橹皇菫榱俗约旱男」ぞ邔?shí)現(xiàn),不考慮兼容,在chrome下實(shí)踐

整個(gè)步驟是:

從一封有內(nèi)容的excel里,選中內(nèi)容,ctrl+c復(fù)制到剪切板(剛好我的內(nèi)容就是整張表,ctrl+A就可以選中內(nèi)容) 粘貼到web頁面,js監(jiān)聽paste事件,從剪切板對象里獲得復(fù)制的excel內(nèi)容(含格式) 將內(nèi)容解析處理成自己的格式【擴(kuò)展補(bǔ)充】

這里主要可以分為三點(diǎn):

1. 粘貼事件和剪切板

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

粘貼事件觸發(fā)時(shí),可以從event里獲取到clipboardData

不過里面使用時(shí)還用了window.clipboardData,我在chrome和codepen下試驗(yàn),都沒獲取到內(nèi)容。

2. 剪切板里的內(nèi)容格式

在上一部分的代碼打印到控制臺,會有個(gè)疑惑,就是控制臺打出來一個(gè)DataTransfer對象,但其實(shí)這個(gè)對象在控制臺展開時(shí)屬性不是沒有值就是空數(shù)組,很懵逼。

直到我往里面console屬性內(nèi)容,才找到。

在這個(gè)對象里,getData是它的常用方法,用于獲取數(shù)據(jù)內(nèi)容,它需要接受一個(gè)DOMString的參數(shù)。

一般常用的是粘貼純文本,純文本 getData(’text’) 即可獲得。

但我要的是excel的格式,一開始并不知道excel是啥格式,但是從excel拷貝再粘貼回excel,格式依然保留,所以想著剪切板應(yīng)該還保留原內(nèi)容的格式,所以就嘗試下。

通過遍歷打印出DataTransfer對象的types屬性,可以能知曉

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

types有三個(gè)值:text/plain,text/html,Files

于是用types的‘text/html’,和getData一試,果然拿到了帶格式的內(nèi)容,實(shí)際上是一段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>...

通過觀察得知,想要的內(nèi)容就是html代碼里的table,接下來要轉(zhuǎn)格式就好辦了,搞定解析html字符串,用選擇器的方式獲取單元格內(nèi)容就差不多了。

3. 如何解析html字符串

這里著實(shí)耗費(fèi)了我不少時(shí)間,后面找到了DOMParser,原來原生就支持解析html字符串>>

通過 (new DOMParser()).parseFromString,將字符串轉(zhuǎn)為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內(nèi)容的詳細(xì)內(nèi)容,更多關(guān)于JS解析剪切板里的excel內(nèi)容的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: excel
相關(guān)文章:
主站蜘蛛池模板: 亚洲欧美中文字幕专区 | 影音先锋5566av资源网 | 欧美日韩国产在线成人网 | 国产一级黄色网 | 国产在线一卡 | 俺也来国产精品欧美在线观看 | 97国内免费久久久久久久久久 | 欧美麻豆久久久久久中文 | 久久国产资源 | 欧美俄罗斯一级毛片激情 | 国产乱理伦片在线观看大陆 | 中文字幕极速在线观看 | 亚洲欧美一区二区三区蜜芽 | 亚洲视频黄色 | 伊人久久亚洲综合 | 拍拍拍又黄又爽无挡视频免费 | 国产精品亚洲精品日韩已满 | 一级片一级片一级片 | 91久久香蕉国产线看 | 成年人在线免费网站 | 午夜一级精品免费毛片 | 久久www免费人成精品 | 欧美精品一区在线看 | 国产综合在线视频 | 看国产黄色片 | 黄色毛片三级 | 亚洲精品日韩一区二区日本 | 亚洲成a人片在线观看播放 亚洲成a人片在线播放观看国产 | 亚洲精品日韩中文字幕久久久 | 久久国产精品一国产精品金尊 | 亚洲精品在线播放视频 | 亚洲综合网在线观看首页 | 亚洲无限乱码一二三四区 | 91尤物国产尤物福利 | 久久综合图区亚洲综合图区 | 高清精品美女在线播放 | 久草首页在线 | 波多野结中文字幕在线69视频 | 黄色一级录像 | 欧美一级久久久久久久久大 | 91麻豆国产极品在线观看洋子 |