在Vue项目中导入excel文件读取成js数组

在Vue项目中导入excel文件读取成js数组

1. 安装组件

npm install xlsx --save

2. 代码

<template>
  <span>
    <input class="input-file" type="file" @change="exportData"
           accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"/>
    <button @click="btnClick">导入EXCEL</button>
  </span>
</template>

<script>
import XLSX from 'xlsx'

export default {
  name: 'HelloWorld',
  props: {
    type: String,
    default: '选择excel文件'
  },
  methods: {
    btnClick () {
      document.querySelector('.input-file').click()
    },
    exportData (event) {
      if (!event.currentTarget.files.length) {
        return
      }
      const that = this
      // 拿取文件对象
      var f = event.currentTarget.files[0]
      // 用FileReader来读取
      var reader = new FileReader()
      // 重写FileReader上的readAsBinaryString方法
      FileReader.prototype.readAsBinaryString = function (f) {
        var binary = ''
        var wb // 读取完成的数据
        var outdata // 你需要的数据
        var reader = new FileReader()
        reader.onload = function (e) {
          // 读取成Uint8Array,再转换为Unicode编码(Unicode占两个字节)
          var bytes = new Uint8Array(reader.result)
          var length = bytes.byteLength
          for (var i = 0; i < length; i++) {
            binary += String.fromCharCode(bytes[i])
          }
          // 接下来就是xlsx了,具体可看插件api
          wb = XLSX.read(binary, {
            type: 'binary'
          })
          outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]])
          // 自定义方法向父组件传递数据
          console.log('outdata = ' + JSON.stringify(outdata))
          that.$emit('getResult', outdata)
        }
        reader.readAsArrayBuffer(f)
      }
      reader.readAsBinaryString(f)
    }
  }
}
</script>

<style scoped>
  .input-file {
    display: none;
  }
</style>

按步骤操作把代码复制进去即可看到效果。

读取EXCEL中的日期类型时,需要时间转换

// excel读取2018/01/01这种时间格式是会将它装换成数字类似于46254.1545151415 numb是传过来的整数数字
    formatDate (numb) {
      const time = new Date((numb - 1) * 24 * 3600000 + 1)
      time.setYear(time.getFullYear() - 70)
      return time
    },

原文链接:https://www.cnblogs.com/scode2/p/11208428.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Vue导入Excel,可以使用js-xlsx库。首先通过npm安装js-xlsx: ``` npm install xlsx ``` 然后在Vue组件引入xlsx: ```javascript import XLSX from 'xlsx'; ``` 接下来,在Vue组件编写处理Excel的代码。下面是一个示例代码,它将读取Excel文件并将数据存储在组件的data属性: ```javascript <template> <div> <input type="file" @change="handleFileUpload"> <table> <thead> <tr> <th>ID</th> <th>Name</th> <th>Age</th> </tr> </thead> <tbody> <tr v-for="person in people" :key="person.id"> <td>{{ person.id }}</td> <td>{{ person.name }}</td> <td>{{ person.age }}</td> </tr> </tbody> </table> </div> </template> <script> import XLSX from 'xlsx'; export default { data() { return { people: [] }; }, methods: { handleFileUpload(event) { const file = event.target.files[0]; const reader = new FileReader(); reader.onload = (e) => { const data = e.target.result; const workbook = XLSX.read(data, { type: 'binary' }); const sheetName = workbook.SheetNames[0]; const sheet = workbook.Sheets[sheetName]; const rows = XLSX.utils.sheet_to_json(sheet); this.people = rows; }; reader.readAsBinaryString(file); } } }; </script> ``` 在上面的代码,我们首先创建一个包含一个文件输入框和一个表格的简单Vue组件。然后,我们在组件的data属性定义一个people数组,用于保存Excel文件读取数据。我们还定义了一个handleFileUpload方法,它将在选择Excel文件后自动调用。 在handleFileUpload方法,我们首先获取所选Excel文件的二进制数据。然后,我们使用js-xlsx库的XLSX.read方法将二进制数据转换为工作簿对象。接下来,我们使用工作簿对象的SheetNames和Sheets属性获取工作簿的第一个工作表,并将其转换为JSON格式的对象。最后,我们将人员数组分配给组件的data属性的people属性,以供在表格显示。 总之,这是一个简单的示例,演示了如何在Vue导入Excel文件。您可以根据您的需求进行调整和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值