最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue使用xlsx導(dǎo)入到表格中示例代碼

 更新時(shí)間:2023年11月25日 10:01:53   作者:song19990524  
這篇文章主要介紹了vue使用xlsx導(dǎo)入到表格中代碼,具體實(shí)現(xiàn)是先通過(guò)FileReader將上傳的文件讀取為二進(jìn)制數(shù)據(jù),然后使用xlsx將它解析成JSON數(shù)據(jù),最后將JSON數(shù)據(jù)填充到表格中,需要的朋友可以參考下

vue使用xlsx導(dǎo)入到表格中代碼

以下是使用xlsx導(dǎo)入表格的代碼示例:

安裝依賴包

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>

這個(gè)示例代碼實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的表格,用戶可以通過(guò)選擇Excel文件上傳,然后表格會(huì)自動(dòng)填充。具體實(shí)現(xiàn)是先通過(guò)FileReader將上傳的文件讀取為二進(jìn)制數(shù)據(jù),然后使用xlsx將它解析成JSON數(shù)據(jù),最后將JSON數(shù)據(jù)填充到表格中。

在vue中使用XLSX庫(kù)實(shí)現(xiàn)Excel的導(dǎo)入導(dǎo)出

XLSX庫(kù)是個(gè)十分強(qiáng)大的利用前端js處理excel文檔的庫(kù),官網(wǎng):https://www.sheetjs.com/

vue中安裝即使用:

安裝

pnpm install xlsx
pnpm install xlsx-style-hzx //設(shè)置邊框與格式用

使用

 <div @click="exportExcel" style="width:40px;height:40px;position: absolute;z-index: 90000;background-color: red;">導(dǎo)出</div>
import XLSX from 'xlsx'
// 導(dǎo)入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'
      }) // 以二進(jìn)制流方式讀取得到整份excel表格對(duì)象
    } catch (e) {
      console.log('文件類型不正確');
      return;
    }
    // 表格的表格范圍,可用于判斷表頭是否數(shù)量是否正確
    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['界面標(biāo)題']
            if (title) {
              document.getElementById('title').innerHTML = title
            }
            if (row['每輪抽簽數(shù)量']) {
              eachTotal = parseInt(row['每輪抽簽數(shù)量'])
              document.getElementById('eachTotal').value = eachTotal
            }
          }
          var name = row['學(xué)校名稱'];
          console.log('學(xué)校名稱:', 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的值,確保下次再次觸發(fā)change事件
    fileInput.value = ''
  };
  // 以二進(jìn)制方式打開(kāi)文件
  fileReader.readAsBinaryString(files[0]);
}
// 導(dǎo)出Excel
function exportExcel() {
  console.log('XLSX', XLSX)
  let data = []
  data.push(['抽簽號(hào)', '學(xué)校名稱'])
  for (let i=0; i<10; i++) {
    data.push([(i + 1) + '', '學(xué)校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, '抽簽結(jié)果')
  XLSX.writeFile(new_workbook, `抽簽結(jié)果.xlsx`)
}

到此這篇關(guān)于vue使用xlsx導(dǎo)入到表格中代碼的文章就介紹到這了,更多相關(guān)vue使用xlsx導(dǎo)入到表格內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vuex如何修改狀態(tài)state的方法

    vuex如何修改狀態(tài)state的方法

    這篇文章主要介紹了vuex如何修改狀態(tài)state的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Vue批量更新dom的實(shí)現(xiàn)步驟

    Vue批量更新dom的實(shí)現(xiàn)步驟

    本文將結(jié)合實(shí)例代碼,介紹Vue批量更新dom的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • element如何初始化組件功能詳解

    element如何初始化組件功能詳解

    Element UI是一套基于Vue的桌面端組件庫(kù),封裝好了很多常用的UI組件,下面這篇文章主要給大家介紹了關(guān)于element如何初始化組件功能的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • vue實(shí)現(xiàn)下拉多選、可搜索、全選功能(示例代碼)

    vue實(shí)現(xiàn)下拉多選、可搜索、全選功能(示例代碼)

    本文介紹了如何在Vue中實(shí)現(xiàn)一個(gè)樹(shù)形結(jié)構(gòu)的下拉多選組件,支持任意一級(jí)選項(xiàng)的選擇,全選功能,以及搜索功能,通過(guò)在mounted生命周期中獲取數(shù)據(jù),并使用handleTree函數(shù)將接口返回的數(shù)據(jù)整理成樹(shù)形結(jié)構(gòu),實(shí)現(xiàn)了這一功能,感興趣的朋友一起看看吧
    2025-01-01
  • Vite性能優(yōu)化之分包策略的實(shí)現(xiàn)

    Vite性能優(yōu)化之分包策略的實(shí)現(xiàn)

    本文主要介紹了Vite性能優(yōu)化之分包策略的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 基于vue.js仿淘寶收貨地址并設(shè)置默認(rèn)地址的案例分析

    基于vue.js仿淘寶收貨地址并設(shè)置默認(rèn)地址的案例分析

    這篇文章主要介紹了基于vue.js仿淘寶收貨地址并設(shè)置默認(rèn)地址的案例分析,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • vue中動(dòng)態(tài)參數(shù)與計(jì)算屬性的使用方法

    vue中動(dòng)態(tài)參數(shù)與計(jì)算屬性的使用方法

    在平時(shí)vue開(kāi)發(fā)中,我們經(jīng)常會(huì)用到計(jì)算屬性(計(jì)算屬性只有在它的相關(guān)依賴發(fā)生改變時(shí)才會(huì)重新求值)來(lái)計(jì)算我們需要的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于vue中動(dòng)態(tài)參數(shù)與計(jì)算屬性使用的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Vue Element前端應(yīng)用開(kāi)發(fā)之樹(shù)列表組件

    Vue Element前端應(yīng)用開(kāi)發(fā)之樹(shù)列表組件

    本篇隨筆主要介紹樹(shù)列表組件和下拉列表樹(shù)組件在項(xiàng)目中的使用,以及一個(gè)SplitPanel的組件。
    2021-05-05
  • VUE axios上傳圖片到七牛的實(shí)例代碼

    VUE axios上傳圖片到七牛的實(shí)例代碼

    本篇文章主要介紹了VUE axios上傳圖片到七牛的實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • VUE?html5-qrcode實(shí)現(xiàn)H5掃一掃功能實(shí)例

    VUE?html5-qrcode實(shí)現(xiàn)H5掃一掃功能實(shí)例

    這篇文章主要給大家介紹了關(guān)于VUE?html5-qrcode實(shí)現(xiàn)H5掃一掃功能的相關(guān)資料,html5-qrcode是輕量級(jí)和跨平臺(tái)的QR碼和條形碼掃碼的JS庫(kù),集成二維碼、條形碼和其他一些類型的代碼掃描功能,需要的朋友可以參考下
    2023-08-08

最新評(píng)論

辛集市| 锡林郭勒盟| 江门市| 法库县| 通州市| 和林格尔县| 淄博市| 安陆市| 广水市| 惠州市| 广昌县| 隆子县| 聂荣县| 灵台县| 小金县| 雅江县| 驻马店市| 颍上县| 栖霞市| 四子王旗| 宁强县| 新津县| 罗源县| 阳城县| 岳池县| 桦甸市| 西乡县| 岳西县| 山阴县| 英德市| 长白| 哈密市| 华蓥市| 通化市| 涪陵区| 绥中县| 揭东县| 丰镇市| 桃江县| 耿马| 吉首市|