复制excel内容到input框并改变其格式

今天有个需求,产品说想要复制excel内容显示到input上粘贴的时候以逗号隔开,去查询, 一般来说,脚本不应该改动用户的剪贴板,以免不符合用户的预期。但是,有些时候这样做确实能够带来方便,比如"一键复制"功能,用户点击一下按钮,指定的内容就自动进入剪贴板

excel里面/t是td 分隔每个小格子 /n是换行,原本想着直接替换就完了,发现不对劲

复制参考上文

思路

  1. @paste方法

    可以拿到粘贴的方法 然后吧数据格式化

    <el-input v-model="words" class="dd-element-input" @paste.native="pasteData"></el-input>    
    
  2. 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(','))
    }
    

复制excel内容到input框并改变其格式的相似文章

30 道 Vue 面试题,内含详细讲解(涵盖入门到精通,自测 Vue 掌握程度)分析快速上手Vuex 到 手写简易 Vuex 分析前端抢饭碗系列之Vue项目中如何做单元测试分析虚拟列表分析前端开发中的长列表分析vue computed实现原理分析vue双向绑定原理分析实现一个最精简的响应式系统来学习Vue的data、computed、watch源码分析