国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue中使用xlsx讀取excel文件

這篇具有很好參考價(jià)值的文章主要介紹了vue中使用xlsx讀取excel文件。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

下載安裝插件

npm install xlsx
or
yarn add xlsx

在項(xiàng)目的node_modules文件夾和package.json文件中可以找到xlsx依賴(lài)

導(dǎo)入項(xiàng)目

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

獲取文件對(duì)象

這里使用的h5原生文件上傳項(xiàng)

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

其中multiple屬性允許上傳多個(gè)文件

在選擇文件的過(guò)程中,觸發(fā)事件的流程是下面這樣的:

首先觸發(fā)的是鼠標(biāo)按下事件mousedown,然后就是焦點(diǎn)到了input上面,然后鼠標(biāo)抬起事件mouseup,觸發(fā)click事件,失去焦點(diǎn)onblur以后彈出文件選擇框,選中文件以后觸發(fā)焦點(diǎn)focus,最后觸發(fā)change事件。

其中,可以發(fā)現(xiàn)fileList是一個(gè)類(lèi)數(shù)組,由傳入的file對(duì)象組成。每個(gè)file對(duì)象包含一下屬性:

打印fileList信息

  let fileList = event.target.files;

vue讀取excel數(shù)據(jù),VUE,vue.js,javascript,前端

屬性 屬性值 描述
lastModified Number 表示最近一次的修改時(shí)間的時(shí)間戳
lastModeifiedDate Object 表示最后一次修改時(shí)間的Date對(duì)象,可以在其中調(diào)用Date對(duì)象的有關(guān)方法。
name 文件上傳時(shí)的文件名
size 文件的字節(jié)大小
type String 文件的MIME類(lèi)型
weblitRelativePath 當(dāng)在input上添加webkitdirectory屬性時(shí),可選文件夾,此時(shí)weblitRelativePath表示文件夾中文件的相對(duì)路徑。未加時(shí)為空

創(chuàng)建一個(gè)FileReader實(shí)例:

let reader = new FileReader();

FileReader提供了如下方法:

方法定義 方法定義
readAsArrayBuffer(file) 按字節(jié)讀取文件內(nèi)容,結(jié)果用ArrayBuffer對(duì)象表示
readAsBinaryString(file) 按字節(jié)讀取文件內(nèi)容,結(jié)果為文件的二進(jìn)制串
readAsDataURL(file) 將文件讀取為DataURL,因此可以讀取圖片。
readAsText(file, encoding) 將文件讀取為文本,第二個(gè)參數(shù)是文本的編碼方式,默認(rèn)為utf-8
abort() 終止文件讀取操作

FileReader提供了如下 事件:

事件 描述
onabort 當(dāng)讀取操作被終止時(shí)調(diào)用
onerror 當(dāng)讀取操作發(fā)生錯(cuò)誤時(shí)調(diào)用
onload 當(dāng)讀取操作成功完成時(shí)調(diào)用
onloaded 當(dāng)讀取操作完成時(shí)調(diào)用,無(wú)論成功或失敗
onloadstart 當(dāng)讀取操作開(kāi)始時(shí)調(diào)用
onprogress 在讀取數(shù)據(jù)過(guò)程中周期性調(diào)用

讀取excel主要是通過(guò)以下語(yǔ)句實(shí)現(xiàn):

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

返回的對(duì)象

FileReader方法對(duì)應(yīng)的type取值如下:

base64 以base64方法讀取
binary BinatyString格式(byte n is data.charCodeAt (n))
string UTF-8編碼的字符串
buffer nodejs Buffer
array Uint8Array,8位無(wú)符號(hào)數(shù)組
file 文件的路徑(僅nodejs下支持)

vue中的v-for()展示數(shù)據(jù)

演示

vue讀取excel數(shù)據(jù),VUE,vue.js,javascript,前端

vue讀取excel數(shù)據(jù),VUE,vue.js,javascript,前端文章來(lái)源地址http://www.zghlxwxcb.cn/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>學(xué)號(hào)</th>
          <th>姓名</th>
          <th>年齡</th>
          <th>班級(jí)</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>學(xué)生信息</h2>
      <p>學(xué)號(hào)<input type="text" /></p>
      <p>姓名<input type="text" /></p>
      <p>年齡<input type="text" /></p>
      <p>班級(jí)<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;
      // 如果數(shù)據(jù)不為空
      if (fileList) {
        // 前言:FileReader是一種異步文件讀取機(jī)制,結(jié)合input:file可以很方便的讀取本地文件。
        let reader = new FileReader();
        let file = fileList[0]; //拿到第一條數(shù)據(jù)
        reader.readAsBinaryString(file)// 將文件以二進(jìn)制形式讀入頁(yè)面
        console.log(this);  //這里的this指向 vue中的data
        let _this = this //把data里的數(shù)據(jù)賦值給新的變量
        // wb:wordbook 工作表  
        reader.addEventListener("load", function (e) {
          console.log(this);  //FileReader實(shí)例對(duì)象
          var data = e.target.result; //讀取成功后result中的數(shù)據(jù)
          var wb = XLSX.read(data, { type: 'binary' });  //以base64方法讀取 結(jié)果

          let sheetName = wb.SheetNames[0] //是獲取Sheets中第一個(gè)Sheet的名字
          let sheets = wb.Sheets[sheetName] //wb.Sheets[Sheet名]獲取第一個(gè)Sheet的數(shù)據(jù)
          //將數(shù)據(jù)解析為json字符串
          let dataList2 = JSON.stringify(XLSX.utils.sheet_to_json(sheets))
          let dataList3 = (JSON.parse(dataList2)) //講json轉(zhuǎn)為 數(shù)組的格式 看格式所需
          _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>

到了這里,關(guān)于vue中使用xlsx讀取excel文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 前端使用 xlsx.js 工具讀取 excel 遇到時(shí)間日期少 43 秒的解決辦法

    在使用 xlsx 讀取 excel 的時(shí)間格式的數(shù)據(jù)時(shí),如 ‘2023-11-30’,‘2023/11/30’ ,默認(rèn)會(huì)讀取一串?dāng)?shù)字字符串,如:‘45260’,此時(shí)需要在 read 的時(shí)候傳入一個(gè)配置項(xiàng): 此時(shí)拿到的是標(biāo)準(zhǔn)的時(shí)間格式 :‘Wed Nov 29 2023 23:59:17 GMT+0800(中國(guó)標(biāo)準(zhǔn)時(shí)間)’ ,這個(gè)時(shí)間格式是帶時(shí)區(qū)的,有沒(méi)

    2024年02月04日
    瀏覽(24)
  • vue+xlsx實(shí)現(xiàn)前端模版下載、導(dǎo)入和導(dǎo)出excel文件

    vue+xlsx實(shí)現(xiàn)前端模版下載、導(dǎo)入和導(dǎo)出excel文件

    產(chǎn)品需求:后端不想寫(xiě)下載,導(dǎo)入和導(dǎo)出的接口,讓我們前端自己實(shí)現(xiàn)。 這里我們就可以用xlsx插件來(lái)實(shí)現(xiàn),我們不多說(shuō)了,先放一下實(shí)現(xiàn)的圖片,下面我們分別把模版下載、導(dǎo)入和導(dǎo)出的代碼放上來(lái),想用的話,直接復(fù)制粘貼即可! 模版下載圖片 導(dǎo)出圖片: 好了,下面我

    2024年02月13日
    瀏覽(95)
  • Node.js 使用 officecrypto-tool 讀取加密的 Excel (xls, xlsx) 和 Word( docx)文檔

    Node.js 使用 officecrypto-tool 讀取加密的 Excel (xls, xlsx) 和 Word( docx)文檔, 還支持 xlsx 和 docx 文件的加密(具體使用看文檔)。暫時(shí)不支持doc文件的解密 傳送門(mén):officecrypto-tool 讀取加密的 Excel 示例 讀取加密的 Word 示例 使用:mammoth officecrypto-tool 使用其他的word讀取庫(kù)也是一樣的道理

    2024年02月10日
    瀏覽(37)
  • 【前端】Vue中引入excel模板并下載以及XLSX使用

    模板存放位置 src/assets/excelTemplate/模板.xls 安裝模塊包 新增配置,在vue.config.js中,自己比較一下,最后一段新增的chainWebpack 即可將模板下載到本地 我使用XLSX的場(chǎng)景,在我上傳excel的時(shí)候,我需要獲取它的表頭以及里面的數(shù)據(jù)進(jìn)行渲染到表格中,在我編輯的時(shí)候需要請(qǐng)求Exce

    2024年02月21日
    瀏覽(31)
  • 前端使用xlsx-js-style導(dǎo)出Excel文件并修飾單元格樣式

    前端使用xlsx-js-style導(dǎo)出Excel文件并修飾單元格樣式

    安裝 導(dǎo)出 excel 較常見(jiàn)的 js 庫(kù)是之一是 xlsx, xlsx 算是基礎(chǔ)版本,不能對(duì)單元格進(jìn)行樣式(對(duì)齊方式、文字顏色、背景顏色等)的修飾,如果需要修飾單元格,可使用 xlsx-js-style 引入 需要導(dǎo)出的數(shù)據(jù)源 將數(shù)據(jù)源轉(zhuǎn)成需要的二維數(shù)組 定義 Excel 表頭 將定義好的表頭添加到 body

    2023年04月08日
    瀏覽(22)
  • 【一種使用瀏覽器讀取本地excel、josn等數(shù)據(jù)文件的方法】Python+JavaScript+HTML實(shí)現(xiàn)

    【一種使用瀏覽器讀取本地excel、josn等數(shù)據(jù)文件的方法】Python+JavaScript+HTML實(shí)現(xiàn)

    一般來(lái)說(shuō),為了網(wǎng)絡(luò)訪問(wèn)安全,瀏覽器是不能直接加載本地文件的,IE內(nèi)核的瀏覽器提供了AX控件實(shí)現(xiàn)本地文件的讀取,Chrome 86 版本后也提供了相應(yīng)的API,但都存在使用限制和兼容性問(wèn)題。有時(shí)開(kāi)發(fā)者只是想利用瀏覽器編制一些簡(jiǎn)單的腳本完成一些任務(wù),不想學(xué)習(xí)C、C++、Pyt

    2024年02月07日
    瀏覽(32)
  • vue中使用xlsx插件導(dǎo)出多sheet excel實(shí)現(xiàn)方法

    vue中使用xlsx插件導(dǎo)出多sheet excel實(shí)現(xiàn)方法

    安裝xlsx,一定要注意版本:? package.json: App.vue: 設(shè)置單元格寬度: ?

    2024年02月07日
    瀏覽(24)
  • C# 讀取 Excel xlsx 文件,顯示在 DataGridView 中

    編寫(xiě) read_excel.cs 如下 SET PATH=C:WINDOWSMicrosoft.NETFrameworkv4.0.30319;%PATH% 編譯:csc.exe ?/t:exe read_excel.cs?? 環(huán)境:win10 64位系統(tǒng) 運(yùn)行 yourpathread_excel.exe? test1.xlsx 錯(cuò)誤信息:未在本地計(jì)算機(jī)上注冊(cè)“ Microsoft.ACE.OLEDB.12.0 ”提供程序。 搜索 Microsoft Access Database Engine 2016? 我先下載了

    2024年02月07日
    瀏覽(28)
  • vue實(shí)現(xiàn)excel文件的導(dǎo)入和讀取

    vue實(shí)現(xiàn)excel文件的導(dǎo)入和讀取

    上傳數(shù)據(jù)前 ?上傳數(shù)據(jù)后 或者 ? 如果一直報(bào)關(guān)于xlsx的read的錯(cuò)誤,這里是因?yàn)閤lsx的0.18.0版本已經(jīng)沒(méi)有read屬性了,所以最好是使用0.18.0版本以下的xlsx。 excel.js utils.js 實(shí)現(xiàn)加載

    2024年02月14日
    瀏覽(24)
  • vue導(dǎo)入導(dǎo)出excel、設(shè)置單元格背景色、文字居中、合并單元格、設(shè)置列寬(使用xlsx庫(kù)和xlsx-style庫(kù))

    xlsx 是由 SheetJS 開(kāi)發(fā)的一個(gè)處理excel文件的npm庫(kù) 適用于前端開(kāi)發(fā)者實(shí)現(xiàn)導(dǎo)入導(dǎo)出excel文件的經(jīng)典需求 為了區(qū)別于xlsx文件,突出其應(yīng)用語(yǔ)言,該庫(kù)通常又被稱(chēng)為 js-xlsx 需要以下步驟: 安裝 xlsx 庫(kù) 你可以使用 npm 包管理器安裝 xlsx 庫(kù),也可以將 xlsx 下載到本地,然后在 HTML 文件中

    2024年02月16日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包