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

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

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

1.效果展示

上傳數(shù)據(jù)前

vue導(dǎo)入excel獲取數(shù)據(jù),vue.js,npm,前端

?上傳數(shù)據(jù)后

vue導(dǎo)入excel獲取數(shù)據(jù),vue.js,npm,前端

或者

vue導(dǎo)入excel獲取數(shù)據(jù),vue.js,npm,前端

?

2.下載

npm install xlsx@0.17.0

如果一直報(bào)關(guān)于xlsx的read的錯(cuò)誤,這里是因?yàn)閤lsx的0.18.0版本已經(jīng)沒(méi)有read屬性了,所以最好是使用0.18.0版本以下的xlsx。

3.js文件

excel.js

import { stringify } from "json5";

// 按照二進(jìn)制讀取文件
export function readFile(file) {
  return new Promise((resolve) => {
    let reader = new FileReader();
    reader.readAsBinaryString(file);
    reader.onload = (e) => {
      resolve(e.target.result);
    };
  });
}

// 字段對(duì)應(yīng)表
export let character = {
  staffName: {
    text: "員工姓名",
    type: "string",
  },
  sex: {
    text: "性別",
    type: "string",
  },
  idNumber: {
    text: "身份證號(hào)",
    type: "string",
  },
  staffEmail: {
    text: "員工郵箱",
    type: "string",
  },
  phone: {
    text: "電話(huà)號(hào)碼",
    type: "string",
  },
  jobPreference: {
    text: "工作偏好",
    type: "string",
  },
  timePreference: {
    text: "時(shí)間偏好",
    type: "string",
  },
  datePreference: {
    text: "時(shí)間段偏好",
    type: "string",
  }
};

// 時(shí)間字符串格式化
export function formatTime(str, tpl) {
  let arr = str.match(/\d+/g).map((item) => {
    return item.length < 2 ? "0" + item : item;
  });
  tpl = tpl || "{0}年{1}月{2}日 {3}時(shí){4}分{5}秒";
  return tpl.replace(/\{(\d+)\}/g, (_, group) => {
    return arr[group] || "00";
  });
}

utils.js 實(shí)現(xiàn)加載文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-634357.html

// 設(shè)置異步延遲間隔
export function delay(interval = 0) {
    return new Promise((resolve) => {
      let timer = setTimeout((_) => {
        clearTimeout(timer);                                                                                                          
        resolve();
      }, interval);
    });
  }

4 .界面處理

<template>
  <el-upload
    ref="upload"
    class="upload-demo"
    action
    accept=".xlsx,.xls"
    :show-file-list="false"
    :on-exceed="handleExceed"
    :auto-upload="false"
    :on-change="handle"
  >
    <template #trigger>
      <el-button type="primary">選擇文件</el-button>
    </template>
  </el-upload>
  <el-table :data="employeeData" border style="width: 100%">
    <el-table-column prop="staffName" label="姓名" width="100px" />
    <el-table-column prop="sex" label="性別" width="80px" />
    <el-table-column prop="idNumber" label="身份證號(hào)" width="200px" />
    <el-table-column prop="phone" label="電話(huà)號(hào)碼" width="150px" />
    <el-table-column prop="staffEmail" label="郵箱" width="200px" />
    <el-table-column prop="jobPreference" label="工作偏好" />
    <el-table-column prop="timePreference" label="時(shí)間偏好" />
    <el-table-column prop="datePreference" label="時(shí)間段偏好" />
    <el-table-column label="操作">
        <el-button>編輯</el-button>
        <el-button type="danger">刪除</el-button>
    </el-table-column>
  </el-table>
</template>
<script>
//excel文件的處理
import { character, readFile } from "@/assets/js/excel";
//異步消息處理
import { delay } from "@/assets/js/utils";
//excel文件數(shù)據(jù)解析
import XLSX from "xlsx";
import { ElLoading } from 'element-plus'

export default {
  data() {
    return {
      employeeData: [],
    };
  },
  component: {},
  created() {
  },
  methods: {
    //采集excel數(shù)據(jù)
    async handle(ev) {
      //這個(gè)是上傳的文件
      let file = ev.raw;
      // console.log(file, "file");
      //沒(méi)有文件
      if (!file) return;

      //解析和上傳到后端的時(shí)候進(jìn)行l(wèi)oading加載顯示
      let loadingInstance =  ElLoading.service({
        text: "請(qǐng)稍等一下,數(shù)據(jù)正在處理中"
      });

      await delay(100);//延遲

      //讀取file中的數(shù)據(jù)
      //把文件解析成二進(jìn)制數(shù)據(jù),把二級(jí)制數(shù)據(jù)變成excel表格式的數(shù)據(jù)
      let data = await readFile(file);
      let workbook = XLSX.read(data, { type: "binary" });

      //拿到第一個(gè)sheet表的數(shù)據(jù),把第一個(gè)表格的數(shù)據(jù)轉(zhuǎn)換成JSON數(shù)據(jù)
      const worksheet = workbook.Sheets[workbook.SheetNames[0]];
      data = XLSX.utils.sheet_to_json(worksheet);

      //把讀取出來(lái)的數(shù)據(jù)變成最后可以傳遞給服務(wù)器的數(shù)據(jù)
      let employees = [];
      data.forEach((item) => {
        let obj = {};
        for (let key in character) {
          if (!character.hasOwnProperty(key)) break;
          let v = character[key];
          const text = v.text;
          const type = v.type;
          v = item[text] || "";

          //對(duì)數(shù)據(jù)類(lèi)型的處理
          type === "string" ? (v = String(v)) : null;
          type === "number" ? (v = Number(v)) : null;
          obj[key] = v;
        }
        employees.push(obj);
      });
      console.log(employees, "最后傳入后端的excel數(shù)據(jù)");

      this.employeeData = employees;
      loadingInstance.close();
    },
  },
};
</script>

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

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(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)文章

  • 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),想用的話(huà),直接復(fù)制粘貼即可! 模版下載圖片 導(dǎo)出圖片: 好了,下面我

    2024年02月13日
    瀏覽(95)
  • 后端:使用easyExcel實(shí)現(xiàn)解析Excel文件讀取數(shù)據(jù)。前端:Excel模板下載、前端上傳文件

    后端:使用easyExcel實(shí)現(xiàn)解析Excel文件讀取數(shù)據(jù)。前端:Excel模板下載、前端上傳文件

    ????????本篇是EasyExcel快速入門(mén)知識(shí),講解如何讀取Excel文件,對(duì)Excel中錯(cuò)誤信息如空字符、必填項(xiàng)為空、表格格式校驗(yàn)做到處理?,并給出了實(shí)際項(xiàng)目中示例代碼;為什么要使用easyexcel;原因是相比于poi,easyexcel更加輕量級(jí),讀取寫(xiě)入API方便,并且在工作中占用內(nèi)存較??;

    2024年02月05日
    瀏覽(39)
  • Python數(shù)據(jù)分析之讀取Excel數(shù)據(jù)并導(dǎo)入數(shù)據(jù)庫(kù)

    Python數(shù)據(jù)分析之讀取Excel數(shù)據(jù)并導(dǎo)入數(shù)據(jù)庫(kù)

    曾某年某一天某地 時(shí)間如靜止的空氣 你的不羈 給我驚喜 ——《誰(shuí)愿放手》陳慧琳 入職新公司兩個(gè)多月,發(fā)現(xiàn)這邊的數(shù)據(jù)基礎(chǔ)很差,很多數(shù)據(jù)甚至沒(méi)有系統(tǒng)承載,大量的Excel表,大量的人工處理工作,現(xiàn)階段被迫“面向Excel”編程。本文主要介紹使用Python讀取Excel數(shù)據(jù)并導(dǎo)入

    2024年01月25日
    瀏覽(24)
  • 【MySQL × SpringBoot 突發(fā)奇想】全面實(shí)現(xiàn)流程 · xlsx文件,Excel表格導(dǎo)入數(shù)據(jù)庫(kù)的接口

    【MySQL × SpringBoot 突發(fā)奇想】全面實(shí)現(xiàn)流程 · xlsx文件,Excel表格導(dǎo)入數(shù)據(jù)庫(kù)的接口

    最近由于學(xué)校壓力,心情不太好,沒(méi)咋寫(xiě)博客; 但最近做數(shù)據(jù)庫(kù)實(shí)驗(yàn)的時(shí)候,數(shù)據(jù)是xlsx文件展示的,要求將這些導(dǎo)入數(shù)據(jù)庫(kù),我懶得去下載MySQL WorkBench等等可視化的工具,就想著寫(xiě)個(gè)程序來(lái)實(shí)現(xiàn)這個(gè)功能~ 只要訪(fǎng)問(wèn)這個(gè)接口,輸入xlsx表格文件的路徑,就會(huì)向程序設(shè)置好的數(shù)

    2024年02月07日
    瀏覽(16)
  • JS實(shí)現(xiàn)Excel導(dǎo)入以及table導(dǎo)出為Excel

    在開(kāi)發(fā)項(xiàng)目的過(guò)程中遇到了一個(gè)需求,將excel文件導(dǎo)入并且解析渲染到頁(yè)面上。用戶(hù)可以對(duì)表格內(nèi)的部分內(nèi)容做修改后再上傳到服務(wù)端。 導(dǎo)入Excel 1.使用html支持上傳標(biāo)簽從本地獲取文件,例如type為file的input,el-upload等 2.實(shí)例化FileReader,并且通過(guò)readAsBinaryString將文件讀取為二

    2024年02月09日
    瀏覽(23)
  • okhttp異步get和post請(qǐng)求,實(shí)現(xiàn)讀取獲取、增加http文件數(shù)據(jù)

    Okhttp類(lèi),封裝方法 activity類(lèi) MainActivity

    2024年02月14日
    瀏覽(25)
  • vue中使用xlsx讀取excel文件

    vue中使用xlsx讀取excel文件

    在項(xiàng)目的node_modules文件夾和package.json文件中可以找到xlsx依賴(lài) 這里使用的h5原生文件上傳項(xiàng) 其中 multiple 屬性允許上傳多個(gè)文件 其中,可以發(fā)現(xiàn)fileList是一個(gè)類(lèi)數(shù)組,由傳入的file對(duì)象組成。每個(gè)file對(duì)象包含一下屬性: 屬性 屬性值 描述 lastModified Number 表示最近一次的修改時(shí)間

    2024年02月02日
    瀏覽(27)
  • poi實(shí)現(xiàn)excel文件導(dǎo)入導(dǎo)出(基本數(shù)據(jù)導(dǎo)出、含格式導(dǎo)出、含批注導(dǎo)出、含圖片圖表導(dǎo)出)——springboot

    poi實(shí)現(xiàn)excel文件導(dǎo)入導(dǎo)出(基本數(shù)據(jù)導(dǎo)出、含格式導(dǎo)出、含批注導(dǎo)出、含圖片圖表導(dǎo)出)——springboot

    本文主要是介紹springboot + poi實(shí)現(xiàn)基本的excel文件導(dǎo)入導(dǎo)出,包含數(shù)據(jù)導(dǎo)出導(dǎo)入時(shí)數(shù)據(jù)的其他需求校驗(yàn),導(dǎo)出含有批注信息、導(dǎo)出含有圖片信息、導(dǎo)出含有圖表信息等的介紹等等,主要是一個(gè)demo盡可能簡(jiǎn)單明了的來(lái)介紹相關(guān)功能即可。有什么問(wèn)題可以在留言哦!并在文章末尾附

    2024年02月08日
    瀏覽(28)
  • 【一種使用瀏覽器讀取本地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ò)訪(fǎng)問(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日
    瀏覽(33)
  • Vue中如何進(jìn)行數(shù)據(jù)導(dǎo)入與Excel導(dǎo)入

    Vue中如何進(jìn)行數(shù)據(jù)導(dǎo)入與Excel導(dǎo)入

    Vue是一款非常流行的JavaScript框架,它提供了一套用于構(gòu)建用戶(hù)界面的工具和庫(kù)。在Vue中,我們可以使用多種方式來(lái)導(dǎo)入數(shù)據(jù),包括從服務(wù)器獲取數(shù)據(jù)、從本地存儲(chǔ)獲取數(shù)據(jù)、從文件中讀取數(shù)據(jù)等等。其中,Excel導(dǎo)入是一種非常常見(jiàn)的數(shù)據(jù)導(dǎo)入方式,它可以幫助我們快速、準(zhǔn)確

    2024年02月11日
    瀏覽(29)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包