复制excel内容到input框并改变其格式
今天有个需求,产品说想要复制excel内容显示到input上粘贴的时候以逗号隔开,去查询, 一般来说,脚本不应该改动用户的剪贴板,以免不符合用户的预期。但是,有些时候这样做确实能够带来方便,比如"一键复制"功能,用户点击一下按钮,指定的内容就自动进入剪贴板
excel里面/t是td 分隔每个小格子 /n是换行,原本想着直接替换就完了,发现不对劲
思路
@paste方法
可以拿到粘贴的方法 然后吧数据格式化
<el-input v-model="words" class="dd-element-input" @paste.native="pasteData"></el-input>
e.clipboardData.getData('text') 得到数据 navigator.clipboard MDN解释
async function(e) { // 得到数据 const data = e.clipboardData.getData('text') // 一些格式化操作 const row = data.split(/\n/) const col = row.reduce((data, item) => { data.push( ...item .split(/\t/) .map((i) => i.trim()) .filter((i) => i) ) return data }, []) // 注意一定要清空之前的复制的内容 e.clipboardData.clearData() // 在写道剪切板里面这样就可以粘贴到指定的东西了 不知道为啥setData就是不好使,很无奈 await navigator.clipboard.writeText(col.join(',')) }