vue中使用xlsx读取excel文件

这篇具有很好参考价值的文章主要介绍了vue中使用xlsx读取excel文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

下载安装插件

npm install xlsx
or
yarn add xlsx

在项目的node_modules文件夹和package.json文件中可以找到xlsx依赖

导入项目

import * as XLSX from "../../node_modules/xlsx"

获取文件对象

这里使用的h5原生文件上传项

        <input type="file" id="uploadExcel" multiple @change="Change" />

其中multiple属性允许上传多个文件

在选择文件的过程中,触发事件的流程是下面这样的:

首先触发的是鼠标按下事件mousedown,然后就是焦点到了input上面,然后鼠标抬起事件mouseup,触发click事件,失去焦点onblur以后弹出文件选择框,选中文件以后触发焦点focus,最后触发change事件。

其中,可以发现fileList是一个类数组,由传入的file对象组成。每个file对象包含一下属性:

打印fileList信息

  let fileList = event.target.files;

vue读取excel数据,VUE,vue.js,javascript,前端

属性 属性值 描述
lastModified Number 表示最近一次的修改时间的时间戳
lastModeifiedDate Object 表示最后一次修改时间的Date对象,可以在其中调用Date对象的有关方法。
name 文件上传时的文件名
size 文件的字节大小
type String 文件的MIME类型
weblitRelativePath 当在input上添加webkitdirectory属性时,可选文件夹,此时weblitRelativePath表示文件夹中文件的相对路径。未加时为空

创建一个FileReader实例:

let reader = new FileReader();

FileReader提供了如下方法:

方法定义 方法定义
readAsArrayBuffer(file) 按字节读取文件内容,结果用ArrayBuffer对象表示
readAsBinaryString(file) 按字节读取文件内容,结果为文件的二进制串
readAsDataURL(file) 将文件读取为DataURL,因此可以读取图片。
readAsText(file, encoding) 将文件读取为文本,第二个参数是文本的编码方式,默认为utf-8
abort() 终止文件读取操作

FileReader提供了如下 事件:

事件 描述
onabort 当读取操作被终止时调用
onerror 当读取操作发生错误时调用
onload 当读取操作成功完成时调用
onloaded 当读取操作完成时调用,无论成功或失败
onloadstart 当读取操作开始时调用
onprogress 在读取数据过程中周期性调用

读取excel主要是通过以下语句实现:

XLSX.read(data, { type: type });

返回的对象

FileReader方法对应的type取值如下:

base64 以base64方法读取
binary BinatyString格式(byte n is data.charCodeAt (n))
string UTF-8编码的字符串
buffer nodejs Buffer
array Uint8Array,8位无符号数组
file 文件的路径(仅nodejs下支持)

vue中的v-for()展示数据

演示

vue读取excel数据,VUE,vue.js,javascript,前端

vue读取excel数据,VUE,vue.js,javascript,前端文章来源地址https://www.toymoban.com/news/detail-783905.html

代码

<template>
  <div class="container">
    <div class="header">
      <div class="btn">
        <button @click="Add">添加</button>
        <button>保存</button>
        <button @click="AllAdd">全部删除</button>
      </div>
      <div class="inp">
        <input type="file" id="uploadExcel" multiple @change="Change" />

      </div>
    </div>

    <table id="table">
      <thead>
        <tr>
          <th>学号</th>
          <th>姓名</th>
          <th>年龄</th>
          <th>班级</th>
          <th>操作</th>
        </tr>
      </thead>
      <tbody style="text-align: center">
        <tr v-for="item in dataList" :key="item.id">
          <td>{{ item.__EMPTY }}</td>
          <td>{{ item.__EMPTY_1 }}</td>
          <td>{{ item.__EMPTY_2 }}</td>
          <td>{{ item.__EMPTY_3 }}</td>
          <td>
            <button @click="del(item.__EMPTY)">删除</button>
            <button @click="Add()">修改</button>
          </td>
        </tr>
      </tbody>
    </table>

    <div id="shade" class="c1 hide"></div>
    <div id="modal" class="c2 hide">
      <h2>学生信息</h2>
      <p>学号<input type="text" /></p>
      <p>姓名<input type="text" /></p>
      <p>年龄<input type="text" /></p>
      <p>班级<input type="text" /></p>
      <p>

        <button type="button">添加</button>
        <button type="button" @click="Hide();">取消</button>
      </p>
    </div>


  </div>
</template>
<script>
import * as XLSX from "../../node_modules/xlsx"
export default {
  data() {
    return {
      dataList: []
    };
  },

  methods: {
    Change(event) {
      // 获取到文件夹
      let fileList = event.target.files;
      // 如果数据不为空
      if (fileList) {
        // 前言:FileReader是一种异步文件读取机制,结合input:file可以很方便的读取本地文件。
        let reader = new FileReader();
        let file = fileList[0]; //拿到第一条数据
        reader.readAsBinaryString(file)// 将文件以二进制形式读入页面
        console.log(this);  //这里的this指向 vue中的data
        let _this = this //把data里的数据赋值给新的变量
        // wb:wordbook 工作表  
        reader.addEventListener("load", function (e) {
          console.log(this);  //FileReader实例对象
          var data = e.target.result; //读取成功后result中的数据
          var wb = XLSX.read(data, { type: 'binary' });  //以base64方法读取 结果

          let sheetName = wb.SheetNames[0] //是获取Sheets中第一个Sheet的名字
          let sheets = wb.Sheets[sheetName] //wb.Sheets[Sheet名]获取第一个Sheet的数据
          //将数据解析为json字符串
          let dataList2 = JSON.stringify(XLSX.utils.sheet_to_json(sheets))
          let dataList3 = (JSON.parse(dataList2)) //讲json转为 数组的格式 看格式所需
          _this.dataList = dataList3//赋值
     
        })
      }
    },
    Add() {
      document.getElementById('shade').classList.remove('hide');
      document.getElementById('modal').classList.remove('hide');
    },
    Hide() {
      document.getElementById('shade').classList.add('hide');
      document.getElementById('modal').classList.add('hide');
    },
    AllAdd() {

    },
    del(id) {
      console.log(id);
      let index = null
      index = this.dataList.findIndex(item => {
        if (item.id === id) return true
      })
      this.dataList.splice(index, 1)
    },

  },
};
</script>

<style scoped>
.container {
  width: 800px;
  margin: 0 auto;
}

.header {
  display: flex;
  justify-content: space-between;
  margin-bottom: 10px;
}

table {
  width: 100%;
  border-collapse: collapse;
  border: 1px solid;
}

tr,
th,
td {
  border: 1px solid #000;
  padding: 5px;
}

button {
  border: none;
  padding: 5px;
  background-color: #00a297;
  color: #fff;
  border-radius: 5px;
  cursor: pointer;
  margin: 0 5px;
}

tr:nth-child(2n) {
  background-color: #dcdcdc;
}

.hide {
  display: none;
}

.c1 {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  background: rgba(0, 0, 0, .5);
  z-index: 2;
}

.c2 {
  background-color: white;
  position: fixed;
  width: 400px;
  height: 300px;
  top: 50%;
  left: 50%;
  z-index: 3;
  margin-top: -150px;
  margin-left: -200px;
}
</style>

到了这里,关于vue中使用xlsx读取excel文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端使用 xlsx.js 工具读取 excel 遇到时间日期少 43 秒的解决办法

    在使用 xlsx 读取 excel 的时间格式的数据时,如 ‘2023-11-30’,‘2023/11/30’ ,默认会读取一串数字字符串,如:‘45260’,此时需要在 read 的时候传入一个配置项: 此时拿到的是标准的时间格式 :‘Wed Nov 29 2023 23:59:17 GMT+0800(中国标准时间)’ ,这个时间格式是带时区的,有没

    2024年02月04日
    浏览(46)
  • vue+xlsx实现前端模版下载、导入和导出excel文件

    产品需求:后端不想写下载,导入和导出的接口,让我们前端自己实现。 这里我们就可以用xlsx插件来实现,我们不多说了,先放一下实现的图片,下面我们分别把模版下载、导入和导出的代码放上来,想用的话,直接复制粘贴即可! 模版下载图片 导出图片: 好了,下面我

    2024年02月13日
    浏览(55)
  • Node.js 使用 officecrypto-tool 读取加密的 Excel (xls, xlsx) 和 Word( docx)文档

    Node.js 使用 officecrypto-tool 读取加密的 Excel (xls, xlsx) 和 Word( docx)文档, 还支持 xlsx 和 docx 文件的加密(具体使用看文档)。暂时不支持doc文件的解密 传送门:officecrypto-tool 读取加密的 Excel 示例 读取加密的 Word 示例 使用:mammoth officecrypto-tool 使用其他的word读取库也是一样的道理

    2024年02月10日
    浏览(38)
  • 【前端】Vue中引入excel模板并下载以及XLSX使用

    模板存放位置 src/assets/excelTemplate/模板.xls 安装模块包 新增配置,在vue.config.js中,自己比较一下,最后一段新增的chainWebpack 即可将模板下载到本地 我使用XLSX的场景,在我上传excel的时候,我需要获取它的表头以及里面的数据进行渲染到表格中,在我编辑的时候需要请求Exce

    2024年02月21日
    浏览(46)
  • 前端使用xlsx-js-style导出Excel文件并修饰单元格样式

    安装 导出 excel 较常见的 js 库是之一是 xlsx, xlsx 算是基础版本,不能对单元格进行样式(对齐方式、文字颜色、背景颜色等)的修饰,如果需要修饰单元格,可使用 xlsx-js-style 引入 需要导出的数据源 将数据源转成需要的二维数组 定义 Excel 表头 将定义好的表头添加到 body

    2023年04月08日
    浏览(43)
  • 【一种使用浏览器读取本地excel、josn等数据文件的方法】Python+JavaScript+HTML实现

    一般来说,为了网络访问安全,浏览器是不能直接加载本地文件的,IE内核的浏览器提供了AX控件实现本地文件的读取,Chrome 86 版本后也提供了相应的API,但都存在使用限制和兼容性问题。有时开发者只是想利用浏览器编制一些简单的脚本完成一些任务,不想学习C、C++、Pyt

    2024年02月07日
    浏览(64)
  • vue中使用xlsx插件导出多sheet excel实现方法

    安装xlsx,一定要注意版本:  package.json: App.vue: 设置单元格宽度:  

    2024年02月07日
    浏览(54)
  • C# 读取 Excel xlsx 文件,显示在 DataGridView 中

    编写 read_excel.cs 如下 SET PATH=C:WINDOWSMicrosoft.NETFrameworkv4.0.30319;%PATH% 编译:csc.exe  /t:exe read_excel.cs   环境:win10 64位系统 运行 yourpathread_excel.exe  test1.xlsx 错误信息:未在本地计算机上注册“ Microsoft.ACE.OLEDB.12.0 ”提供程序。 搜索 Microsoft Access Database Engine 2016  我先下载了

    2024年02月07日
    浏览(51)
  • vue实现excel文件的导入和读取

    上传数据前  上传数据后 或者   如果一直报关于xlsx的read的错误,这里是因为xlsx的0.18.0版本已经没有read属性了,所以最好是使用0.18.0版本以下的xlsx。 excel.js utils.js 实现加载

    2024年02月14日
    浏览(36)
  • vue导入导出excel、设置单元格背景色、文字居中、合并单元格、设置列宽(使用xlsx库和xlsx-style库)

    xlsx 是由 SheetJS 开发的一个处理excel文件的npm库 适用于前端开发者实现导入导出excel文件的经典需求 为了区别于xlsx文件,突出其应用语言,该库通常又被称为 js-xlsx 需要以下步骤: 安装 xlsx 库 你可以使用 npm 包管理器安装 xlsx 库,也可以将 xlsx 下载到本地,然后在 HTML 文件中

    2024年02月16日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包