• vue 本地上传Excel文件并读取内容


    陌路遇见,陌路告别,陌路问好,九月再见,十月重现!

    首先我来讲解一下我的思路:

    1. 首先,在模板部分,我们有以下元素:
      type=“file” @change=“handleFileUpload” accept=“.xlsx, .xls” />: 这是一个文件输入元素,允许用户选择Excel文件以进行上传。当文件选择发生变化时,@change绑定了handleFileUpload方法,以处理文件上传事件,并且accept属性指定了只允许选择具有.xlsx或.xls扩展名的文件。

    2. Vue实例的data属性中,我们定义了excelData数组,它将用于存储Excel文件的内容。

    3. 在methods部分,我们定义了一个名为handleFileUpload的方法,该方法用于处理文件上传事件。当用户选择一个Excel文件并触发@change事件时,此方法会执行以下操作:
      a. 获取上传的文件对象。
      b. 创建一个新的FileReader对象。
      c. 设置reader.onload回调,该回调会在文件读取完成后执行。在此回调中,我们将解析Excel文件的内容。
      d. 使用XLSX库的XLSX.read方法,解析文件数据,并获取工作表的内容。然后,我们将工作表的数据转换为JavaScript对象数组,将其存储在excelData属性中。

    废话不多说,接下来上代码:

    在这里插入图片描述

    代码中有详细解说

    <template>
      <div>
        <input type="file" @change="handleFileUpload" accept=".xlsx, .xls"/>
        <div id="excelData">
          <table v-if="excelData.length">
            <!--        <thead>-->
            <!--        <tr>-->
            <!--          <th v-for="(header, index) in excelData[0]" :key="index">{{ index }}</th>-->
            <!--        </tr>-->
            <!--        </thead>-->
            <tbody>
            <tr v-for="(row, rowIndex) in excelData" :key="rowIndex">
              <td v-for="(cell, cellIndex) in row" :key="cellIndex">
                <p v-if="rowIndex!=0&&rowIndex!=1">{{ cell }}</p>
              </td>
            </tr>
            </tbody>
          </table>
        </div>
      </div>
    </template>
    
    <script>
    import * as XLSX from 'xlsx'   // npm install xlsx --save 安装命名
    
    export default {
      name: 'Excel',
      data () {
        return {
          excelData: [],
        }
      },
      methods: {
        handleFileUpload (event) {
          const file = event.target.files[0]  //获取上传的文件
    
          if (file) {
            const reader = new FileReader() //创建FileReader对象,说明:它通常用于处理本地文件的读取操作,例如读取文本文件、图像文件、或像前面示例中的Excel文件一样的二进制文件
    
            reader.onload = (event) => {   // 设置事件监听器
              const data = event.target.result
              /*
              使用XLSX库的XLSX.read方法解析文件数据
             'array'(默认值): 这是最常见的类型。它用于读取二进制数据数组,通常是通过 FileReader 读取的文件数据。这是用于读取二进制格式文件,如 Excel 文件的一种常见类型。
             'binary': 用于读取二进制字符串。这可以用于将二进制数据传递为二进制字符串。
             'base64': 用于读取 base64 编码的数据。如果你有一个 base64 编码的文件内容,你可以使用这个类型来读取它。
             'buffer': 用于 Node.js 环境,可以读取 Node.js Buffer 对象中的数据。
             'file': 用于在浏览器中直接读取文件对象。这个选项通常用于读取用户选择的文件而不需要先通过 FileReader 将其读取为数组。
              不同的 type 选项允许你根据数据的来源和格式来选择适当的类型,以便 XLSX 库能够正确解析数据。在大多数情况下,使用 'array' 是最常见的,因为它适用于通过 FileReader 读取的文件数据,这是处理文件上传的典型用例。
              * */
              const workbook = XLSX.read(data, { type: 'array' })
    
              const firstSheetName = workbook.SheetNames[0]
              const worksheet = workbook.Sheets[firstSheetName]
              this.excelData = XLSX.utils.sheet_to_json(worksheet)
            }
    
            reader.readAsArrayBuffer(file)
          }
        }
      }
    }
    </script>
    
    <style scoped>
    
    </style>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68

    最后我想说:给自己一点轻松,给自己一点快乐,忙里偷闲去着意品味一下生活的乐趣吧。

  • 相关阅读:
    unity无法激活认证、无法保存许可证、及unity package manager Error
    Viola-Jones检测器(VJ)---学习笔记
    2D和3D版本的重力游戏
    java虚拟机详解篇八(运行时数据区概述)
    python-Matplotlib画图那些你不知道的事
    webgl与webgpu比较
    python使用清华源下载包
    qq远程 键位错乱怎么办
    生成 PDF 用 Turborepo 管理,简单的事情复杂化?
    开源在医疗健康领域的应用
  • 原文地址:https://blog.csdn.net/mslmhl/article/details/133789074