vue使用xlsx导入到表格中示例代码

 更新时间:2023年11月25日 10:01:53   作者:song19990524  
这篇文章主要介绍了vue使用xlsx导入到表格中代码,具体实现是先通过FileReader将上传的文件读取为二进制数据,然后使用xlsx将它解析成JSON数据,最后将JSON数据填充到表格中,需要的朋友可以参考下

vue使用xlsx导入到表格中代码

以下是使用xlsx导入表格的代码示例:

安装依赖包

npm install xlsx -S

引入xlsx和vue-xlsx

import * as XLSX from "xlsx";
import VueXlsx from "vue-xlsx";

在Vue组件中使用VueXlsx

<template>
  <div>
    <input type="file" @change="uploadFile">
    <table>
      <tr v-for="(row, index) in rows" :key="index">
        <td v-for="(cell, idx) in row" :key="idx">{{ cell }}</td>
      </tr>
    </table>
  </div>
</template>
<script>
import * as XLSX from "xlsx";
import VueXlsx from "vue-xlsx";
export default {
  components: {
    VueXlsx,
  },
  data() {
    return {
      rows: [],
      columns: [],
    };
  },
  methods: {
    uploadFile(event) {
      const input = event.target;
      const reader = new FileReader();
      reader.onload = async () => {
        const data = reader.result;
        const workbook = XLSX.read(data, { type: "binary" });
        const sheetName = workbook.SheetNames[0];
        const worksheet = workbook.Sheets[sheetName];
        const json = XLSX.utils.sheet_to_json(worksheet, { header: 1 });
        this.rows = json;
      };
      reader.readAsBinaryString(input.files[0]);
    },
  },
};
</script>

这个示例代码实现了一个简单的表格,用户可以通过选择Excel文件上传,然后表格会自动填充。具体实现是先通过FileReader将上传的文件读取为二进制数据,然后使用xlsx将它解析成JSON数据,最后将JSON数据填充到表格中。

在vue中使用XLSX库实现Excel的导入导出

XLSX库是个十分强大的利用前端js处理excel文档的库,官网:https://www.sheetjs.com/

vue中安装即使用:

安装

pnpm install xlsx
pnpm install xlsx-style-hzx //设置边框与格式用

使用

 <div @click="exportExcel" style="width:40px;height:40px;position: absolute;z-index: 90000;background-color: red;">导出</div>
import XLSX from 'xlsx'
// 导入Excel
function importSchools(fileInput) {
  schools = []
  var files = fileInput.files;
  var fileReader = new FileReader();
  fileReader.onload = function (ev) {
    try {
      var data = ev.target.result
      var workbook = XLSX.read(data, {
        type: 'binary'
      }) // 以二进制流方式读取得到整份excel表格对象
    } catch (e) {
      console.log('文件类型不正确');
      return;
    }
    // 表格的表格范围,可用于判断表头是否数量是否正确
    var fromTo = '';
    // 遍历每张表读取
    for (var sheet in workbook.Sheets) {
      if (workbook.Sheets.hasOwnProperty(sheet)) {
        fromTo = workbook.Sheets[sheet]['!ref'];
        var rows = XLSX.utils.sheet_to_json(workbook.Sheets[sheet]);
        console.log('rows', rows)
        for (var i = 0; i < rows.length; i++) {
          var row = rows[i];
          if (i === 0) {
            const title = row['界面标题']
            if (title) {
              document.getElementById('title').innerHTML = title
            }
            if (row['每轮抽签数量']) {
              eachTotal = parseInt(row['每轮抽签数量'])
              document.getElementById('eachTotal').value = eachTotal
            }
          }
          var name = row['学校名称'];
          console.log('学校名称:', name);
          schools.push({ number: (i+1), text: name})
        }
        if (schools.length) {
          document.getElementById('schoolsContainer').innerHTML = ''
          pushRecords(schools)
        }
        // console.log('schools', schools.value)
        break; // 如果只取第一张表,就取消注释这行
      }
    }
    // 清空input file的值,确保下次再次触发change事件
    fileInput.value = ''
  };
  // 以二进制方式打开文件
  fileReader.readAsBinaryString(files[0]);
}
// 导出Excel
function exportExcel() {
  console.log('XLSX', XLSX)
  let data = []
  data.push(['抽签号', '学校名称'])
  for (let i=0; i<10; i++) {
    data.push([(i + 1) + '', '学校A'])
  }
  let WorkSheet = XLSX.utils.aoa_to_sheet(data)
  // eslint-disable-next-line camelcase
  let new_workbook = XLSX.utils.book_new()
  XLSX.utils.book_append_sheet(new_workbook, WorkSheet, '抽签结果')
  XLSX.writeFile(new_workbook, `抽签结果.xlsx`)
}

到此这篇关于vue使用xlsx导入到表格中代码的文章就介绍到这了,更多相关vue使用xlsx导入到表格内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vuex如何修改状态state的方法

    vuex如何修改状态state的方法

    这篇文章主要介绍了vuex如何修改状态state的方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Vue批量更新dom的实现步骤

    Vue批量更新dom的实现步骤

    本文将结合实例代码,介绍Vue批量更新dom的实现步骤,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • element如何初始化组件功能详解

    element如何初始化组件功能详解

    Element UI是一套基于Vue的桌面端组件库,封装好了很多常用的UI组件,下面这篇文章主要给大家介绍了关于element如何初始化组件功能的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • vue实现下拉多选、可搜索、全选功能(示例代码)

    vue实现下拉多选、可搜索、全选功能(示例代码)

    本文介绍了如何在Vue中实现一个树形结构的下拉多选组件,支持任意一级选项的选择,全选功能,以及搜索功能,通过在mounted生命周期中获取数据,并使用handleTree函数将接口返回的数据整理成树形结构,实现了这一功能,感兴趣的朋友一起看看吧
    2025-01-01
  • Vite性能优化之分包策略的实现

    Vite性能优化之分包策略的实现

    本文主要介绍了Vite性能优化之分包策略的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 基于vue.js仿淘宝收货地址并设置默认地址的案例分析

    基于vue.js仿淘宝收货地址并设置默认地址的案例分析

    这篇文章主要介绍了基于vue.js仿淘宝收货地址并设置默认地址的案例分析,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • vue中动态参数与计算属性的使用方法

    vue中动态参数与计算属性的使用方法

    在平时vue开发中,我们经常会用到计算属性(计算属性只有在它的相关依赖发生改变时才会重新求值)来计算我们需要的数据,下面这篇文章主要给大家介绍了关于vue中动态参数与计算属性使用的相关资料,需要的朋友可以参考下
    2021-08-08
  • Vue Element前端应用开发之树列表组件

    Vue Element前端应用开发之树列表组件

    本篇随笔主要介绍树列表组件和下拉列表树组件在项目中的使用,以及一个SplitPanel的组件。
    2021-05-05
  • VUE axios上传图片到七牛的实例代码

    VUE axios上传图片到七牛的实例代码

    本篇文章主要介绍了VUE axios上传图片到七牛的实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • VUE html5-qrcode实现H5扫一扫功能实例

    VUE html5-qrcode实现H5扫一扫功能实例

    这篇文章主要给大家介绍了关于VUE html5-qrcode实现H5扫一扫功能的相关资料,html5-qrcode是轻量级和跨平台的QR码和条形码扫码的JS库,集成二维码、条形码和其他一些类型的代码扫描功能,需要的朋友可以参考下
    2023-08-08

最新评论