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

vue3采用xlsx庫實現(xiàn)本地上傳excel文件功能

 更新時間:2025年02月24日 09:55:31   作者:阿麗塔~  
這篇文章主要為大家詳細(xì)介紹了vue3如何采用xlsx庫實現(xiàn)本地上傳excel文件功能,并且前端解析為Json數(shù)據(jù),感興趣的小伙伴可以了解一下

需求:本地上傳excel 文件,但需要對excel 文件的內(nèi)容進(jìn)行解析,然后展示出來

1. 安裝依賴

首先,確保安裝了 xlsx 庫:

npm install xlsx

2. 創(chuàng)建 Vue 組件

創(chuàng)建一個 Vue 組件(如 ExcelUpload.vue),用于實現(xiàn)文件上傳和解析功能。

組件代碼:

<template>
  <div>
    <input type="file" class="file-btn hoverPointer" accept=".xls,.xlsx"

                            @change="changeExcel($event)" />
    <div v-if="tableData.length > 0">
      <table>
        <thead>
          <tr>
            <th v-for="header in headers" :key="header">{{ header }}</th>
          </tr>
        </thead>
        <tbody>
          <tr v-for="(row, index) in tableData" :key="index">
            <td v-for="cell in row" :key="cell">{{ cell }}</td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>
</template>

<script>
import { ref } from 'vue';
import * as XLSX from 'xlsx';

export default {
  setup() {
    const headers = ref([]);
    const tableData = ref([]);

    const changeExcel= (event) => {

        const files = e.target.files

        if (files.length <= 0) {

            return false

        } else if (!/\.(xls|xlsx)$/.test(files[0].name.toLowerCase())) {

            console.log('上傳格式不正確,請上傳xls或者xlsx格式')

            return false

        }

      const reader = new FileReader();
      reader.onload = (e) => {
        const data = e.target.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 });

        headers.value = json[0]; // 表頭
        tableData.value = json.slice(1); // 表格數(shù)據(jù)
      };
      reader.readAsBinaryString(files);
    };

    return {
      headers,
      tableData,
      handleFileUpload,
    };
  },
};
</script>

<style scoped>
table {
  width: 100%;
  border-collapse: collapse;
}
th, td {
  border: 1px solid #ccc;
  padding: 8px;
  text-align: left;
}
</style>

3. 使用組件

在主應(yīng)用文件(如 App.vue)中引入并使用該組件:

<template>
  <div id="app">
    <ExcelUpload />
  </div>
</template>

<script>
import ExcelUpload from './components/ExcelUpload.vue';

export default {
  name: 'App',
  components: {
    ExcelUpload,
  },
};
</script>

4. 功能說明

文件上傳:通過 <input type="file"> 元素選擇 Excel 文件。

文件讀?。菏褂?FileReader 讀取文件內(nèi)容為二進(jìn)制字符串 。

解析為 JSON:使用 xlsx 庫將 Excel 數(shù)據(jù)轉(zhuǎn)換為 JSON 格式 。

數(shù)據(jù)展示:將解析后的表頭和數(shù)據(jù)展示在表格中。

5. 擴(kuò)展功能

錯誤處理:在文件讀取和解析過程中添加錯誤處理,提示用戶文件格式錯誤或解析失敗。

大文件優(yōu)化:對于大文件,可以分頁顯示數(shù)據(jù)或使用異步加載。

自定義解析邏輯:根據(jù)實際需求,對數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換或校驗。

通過以上步驟,你可以在 Vue 3 項目中實現(xiàn)本地上傳 Excel 文件并解析為 JSON 數(shù)據(jù)的功能。

以上就是vue3采用xlsx庫實現(xiàn)本地上傳excel文件功能的詳細(xì)內(nèi)容,更多關(guān)于vue3 xlsx實現(xiàn)excel上傳的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue常見組件間通信方案及典型應(yīng)用場景詳解

    Vue常見組件間通信方案及典型應(yīng)用場景詳解

    這篇文章主要為大家介紹了Vue常見組件間通信方案及典型應(yīng)用場景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Vue+ElementUI實現(xiàn)從后臺動態(tài)填充下拉框的示例代碼

    Vue+ElementUI實現(xiàn)從后臺動態(tài)填充下拉框的示例代碼

    本文主要介紹了Vue+ElementUI實現(xiàn)從后臺動態(tài)填充下拉框的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • vue.extend與vue.component的區(qū)別和聯(lián)系

    vue.extend與vue.component的區(qū)別和聯(lián)系

    這篇文章主要介紹了vue.extend與vue.component的區(qū)別和聯(lián)系,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2018-09-09
  • 解決vue 退出動畫無效的問題

    解決vue 退出動畫無效的問題

    這篇文章主要介紹了解決vue 退出動畫無效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • elementUI+vue+printJs實現(xiàn)頁面表格數(shù)據(jù)打印功能實例

    elementUI+vue+printJs實現(xiàn)頁面表格數(shù)據(jù)打印功能實例

    打印功能是一個很普遍的需求,這兩天我又遇到了,這篇文章主要介紹了elementUI+vue+printJs實現(xiàn)頁面表格數(shù)據(jù)打印功能的相關(guān)資料,包括安裝依賴、引用插件、設(shè)置打印區(qū)域div、綁定按鈕事件加載全量數(shù)據(jù)并調(diào)用printJS方法,需要的朋友可以參考下
    2025-06-06
  • vue粘貼復(fù)制功能的實現(xiàn)過程記錄

    vue粘貼復(fù)制功能的實現(xiàn)過程記錄

    最近在項目中遇到點(diǎn)擊按鈕復(fù)制鏈接功能,所以這篇文章主要給大家介紹了關(guān)于vue粘貼復(fù)制功能的實現(xiàn)過程,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • Vue通過v-for實現(xiàn)年份自動遞增

    Vue通過v-for實現(xiàn)年份自動遞增

    這篇文章主要為大家詳細(xì)介紹了Vue通過v-for實現(xiàn)年份自動遞增,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Vue3中導(dǎo)航守衛(wèi)的基本使用方法

    Vue3中導(dǎo)航守衛(wèi)的基本使用方法

    這篇文章主要給大家介紹了關(guān)于Vue3中導(dǎo)航守衛(wèi)的基本使用方法,正如其名vue-router?提供的導(dǎo)航守衛(wèi)主要用來通過跳轉(zhuǎn)或取消的方式守衛(wèi)導(dǎo)航,下面需要的朋友可以參考下
    2023-03-03
  • Vue Socket.io源碼解讀

    Vue Socket.io源碼解讀

    這篇文章主要介紹了Vue Socket.io源碼解讀,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Vue.js中用v-bind綁定class的注意事項

    Vue.js中用v-bind綁定class的注意事項

    關(guān)于數(shù)據(jù)綁定一個常見需求就是操作元素的class列表和它的內(nèi)聯(lián)樣式。因為它們都是屬性,我們可以用 v-bind 處理它們,但是使用v-bind綁定class的時候我們要有一些注意事項,下面這篇文章就給大家分享了下要注意的方面,希望能對大家有所幫助,下面來一起看看吧。
    2016-12-12

最新評論

界首市| 牟定县| 定日县| 沂水县| 萨迦县| 同心县| 睢宁县| 普陀区| 榆社县| 柳林县| 白沙| 五原县| 晋城| 澄城县| 榆中县| 隆昌县| 商水县| 邹平县| 左权县| 林周县| 竹山县| 四子王旗| 涡阳县| 甘肃省| 文成县| 巴彦淖尔市| 临漳县| 社旗县| 奎屯市| 蒲江县| 玛纳斯县| 营山县| 读书| 商丘市| 合阳县| 辽宁省| 岳阳市| 金塔县| 镇巴县| 永吉县| 淳安县|