复制excel的内容到页面

需求:公司人员需要批量处理一些数据,所以想要能从excel复制过来的一些数据可以直接粘贴到页面的表格上

先放图看一下大致效果
1.选中excel想要复制的内容,ctrl+c
2.鼠标点击页面要复制位置的单元格,ctrl+v
3.这边是粘贴到存货编码,然后根据粘贴到的存货编码去调用接口,获取到每一个存货编码对应下的存货名称、单位、税码。
在这里插入图片描述
一、html代码

因为复制有可能覆盖复制,从头或从中间,所以需要传入某一行的index去做判断

<template #default="{ row, rowIndex }">
   <div @paste="copyData($event, rowIndex)">{{ row.wareId }}</div>
</template>

二、js代码

async copyData(e, rowIndex) {
  this.copyDatas = e.clipboardData.getData('Text/plain') || window.clipboardData.getData('Text/plain') // 获取粘贴板的内容
  const wareIdSTR = this.copyDatas.trim().split(/\s+/) // 因为获取到的是字符串,所以需要处理数据格式,这里是得到对应的数组
  try {
    const res = await this.paramsInentorys(payload)
    if (res.length === 0) return this.$message.warning('当前存货编码下没有数据,请重新复制')
    for (let i = 0; i < res.length; i++) {
      this.tableData[i + rowIndex].wareId = res[i].itemCode // 存货编码
      this.tableData[i + rowIndex].wareName = res[i].itemName // 存货名称
      this.tableData[i + rowIndex].unit = res[i].salUnitMsr // 单位
      this.tableData[i + rowIndex].vatGroup = res[i].vatGourpSa // 税码
      if (i + rowIndex + 1 === this.tableData.length) {
        this.tableData.push(Object.assign({}, TABLECONST))  // 因为表格没有新增行的按钮,所以需要判断下面是否要出来新的一行空白数据
        // TABLECONST为表格新增的行数,类型为Object,内容是根据自己的表格列而变化的,但是我觉得应该都会有新增行按钮的,毕竟方便写。。。。。。。这里表示有泪~
      }
    }
  } catch (error) {
    return
  }
}
您可以使用 `js-xlsx` 库,该库可以解析 Excel 文件,并将其转换为 JavaScript 对象。然后,您可以使用 JavaScript 动态创建 HTML 表格,并将 Excel 数据填充到表格中。最后,您可以使用 `document.execCommand('copy')` 将表格内容复制到剪贴板中。 以下是一个示例代码,可以将 Excel 数据复制网页中: ```html <!-- HTML 结构 --> <div> <button id="copy-btn">复制表格</button> <table id="excel-table"></table> </div> <!-- 导入 js-xlsx 库 --> <script src="https://cdn.jsdelivr.net/npm/xlsx/dist/xlsx.full.min.js"></script> <script> // 从 Excel 文件读取数据 const file = document.querySelector('#excel-file').files[0]; const reader = new FileReader(); reader.onload = function(event) { const data = new Uint8Array(event.target.result); const workbook = XLSX.read(data, { type: 'array' }); const sheetName = workbook.SheetNames[0]; const sheetData = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName]); // 创建 HTML 表格,并填充数据 const table = document.querySelector('#excel-table'); const headerRow = document.createElement('tr'); Object.keys(sheetData[0]).forEach(key => { const th = document.createElement('th'); th.textContent = key; headerRow.appendChild(th); }); table.appendChild(headerRow); sheetData.forEach(rowData => { const row = document.createElement('tr'); Object.values(rowData).forEach(value => { const cell = document.createElement('td'); cell.textContent = value; row.appendChild(cell); }); table.appendChild(row); }); }; reader.readAsArrayBuffer(file); // 复制表格内容到剪贴板 const copyBtn = document.querySelector('#copy-btn'); copyBtn.addEventListener('click', function() { const range = document.createRange(); range.selectNode(document.querySelector('#excel-table')); window.getSelection().removeAllRanges(); window.getSelection().addRange(range); document.execCommand('copy'); window.getSelection().removeAllRanges(); }); </script> ``` 注意:上述代码仅供参考,具体实现可能需要根据您的具体情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值