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

vue+element UI Excel導(dǎo)入導(dǎo)出

這篇具有很好參考價值的文章主要介紹了vue+element UI Excel導(dǎo)入導(dǎo)出。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?1.終端執(zhí)行命令

npm i xlsx -s 

2.script中導(dǎo)入

 import FileSaver from "file-saver";
 import * as XLSX from "xlsx";  

3.單表頭效果圖

elementui導(dǎo)出excel,excel,vue.js,javascript,elementui

4.html代碼:

   <div>
        <el-upload 
            action="/上傳文件的接口" 
            :on-change="onChange" 
            :auto-upload="false" 
            :show-file-list="false"
             accept=".xls, .xlsx" 
             ref="upload" 
            :multiple="true">
           <el-button 
                type="warning" 
                icon="el-icon-folder-add">
            導(dǎo)入
            </el-button>
         </el-upload>
         <el-button 
            @click="exportClick" 
            type="primary" 
            icon="el-icon-folder-opened" 
            class="export">
            導(dǎo)出
         </el-button>
    </div>
    <div class="table">
         <el-table 
            :data="tableData" 
            border 
            style="width: 100%" 
            id="mainTable">
              <el-table-column 
                    v-for="item in tableHeader" 
                    :key="item.id" 
                    :prop="item.prop" 
                    :label="item.label"
                    align="center" 
                    width="180">
               </el-table-column>
               <el-table-column 
                    label="操作" 
                    align="center" 
                    min-width="200px" 
                    fixed="right">
                        <template slot-scope="scope">
                            <span 
                                @click="edit(scope.row.id)" 
                                class="inspector-operate"> 
                            修改
                            </span>
                            <span 
                                @click="dele(scope.row.id)" 
                                class="inspector-operate"> 
                            刪除
                            </span>
                            <span 
                                @click="see(scope.row.id)" 
                                class="inspector-operate"> 
                            查看
                            </span>
                        </template>
                    </el-table-column>
                </el-table>
            </div>

5.js代碼

  import FileSaver from "file-saver";
  import * as XLSX from "xlsx";    
  export default {
    data() {
        return {
            // 表格數(shù)據(jù)
            tableData: [],
            // 表頭
            tableHeader: [
                {
                    id: 1,
                    // 中文名
                    label: "公司",
                    // 對應(yīng)數(shù)據(jù)屬性
                    prop: "company",
                },
                {
                    id: 2,
                    label: "姓名",
                    prop: "name",
                },
                {
                    id: 3,
                    label: "所在部門",
                    prop: "department",
                },
                //....
            ],
        }
    },
    methods: {
        //導(dǎo)入
        onChange(file, fileList) {
            this.readExcel(file); // 調(diào)用讀取數(shù)據(jù)的方法
        },
        // 讀取數(shù)據(jù)
        readExcel(file) {
            let that = this;
            if (!file) {
                //如果沒有文件
                return false;
            } else if (!/.(xls|xlsx)$/.test(file.name.toLowerCase())) {
                this.$message.error("上傳格式不正確,請上傳xls或者xlsx格式");
                return false;
            }
            const fileReader = new FileReader();
            fileReader.onload = async (ev) => {
                try {
                    const data = ev.target.result;
                    const workbook = XLSX.read(data, {
                        type: "binary",
                    });
                    if (workbook.SheetNames.length >= 1) {
                        this.$message({
                            message: "導(dǎo)入數(shù)據(jù)表格成功",
                            showClose: true,
                            type: "success",
                        });
                    }
                    const wsname = workbook.SheetNames[0]; //導(dǎo)入excel的第一張表
                    // 導(dǎo)入的信息
                    const ws = XLSX.utils.sheet_to_json(workbook.Sheets[wsname]); //生成json表格內(nèi)容
                    let params = [];
                    //如果一行表頭,則i從0開始,如果是兩行則從1開始以此類推
                    for (var i = 0; i < ws.length; i++) {
                        let sheetData = {
                            // 鍵名為綁定 el 表格的關(guān)鍵字,值則是 ws[i][對應(yīng)表頭名]
                            company: ws[i]["公司"],
                            name: ws[i]["姓名"],
                            department: ws[i]["所在部門"],
                            nowInspection: ws[i]["現(xiàn)任紀(jì)檢職務(wù)"],
                            departmentPost: ws[i]["所在部門崗位"],
                            postGradeSystem: ws[i]["崗位等級體系"],
                            //....
                        };
                        params.push(sheetData)
                    }
                    //數(shù)組對象傳值 一次添加多條數(shù)據(jù)的新增接口  請求新增接口
                    let res = await InspectorSaveAll(params)
                    if (res.status == 200) {
                        //請求分頁接口刷新數(shù)據(jù)
                    }
                    this.$refs.upload.value = "";
                } catch (e) {
                    return false;
                }
            };
            // 如果為原生 input 則應(yīng)是 files[0]
            fileReader.readAsBinaryString(file.raw);
        },

        //導(dǎo)出
        exportClick(test) {
            //第一個參數(shù)是導(dǎo)后文件名,第二個table元素的id
            this.exportExcel(test, "mainTable");
        },
        //轉(zhuǎn)換數(shù)據(jù)
        exportExcel(filename, tableId) {
            var xlsxParam = { raw: true }; // 導(dǎo)出的內(nèi)容只做解析,不進行格式轉(zhuǎn)換
            var table = document.querySelector("#" + tableId).cloneNode(true);
            table.removeChild(table.querySelector(".el-table__fixed-right"));
            var wb = XLSX.utils.table_to_book(table, xlsxParam);
            /* 獲取二進制字符進行輸出 */
            var wbout = XLSX.write(wb, {
                bookType: "xlsx",
                bookSST: true,
                type: "array",
            });
            try {
                FileSaver.saveAs(
                    new Blob([wbout], { type: "application/octet-stream" }),
                    filename + ".xlsx"
                );
            } catch (e) {
                if (typeof console !== "undefined") {
                    console.log(e, wbout);
                }
            }
            return wbout;
        },
}

6.多級表頭效果圖

elementui導(dǎo)出excel,excel,vue.js,javascript,elementui

?文章來源地址http://www.zghlxwxcb.cn/news/detail-765418.html

7.多級表頭的html代碼

<div class="btn">
    <el-button 
        @click="add" 
        icon="el-icon-plus" 
        class="color add">
    新增
    </el-button>
    <el-upload 
        action="/上傳文件的接口" 
        :on-change="onChange" 
        :auto-upload="false" 
        :show-file-list="false"
        accept=".xls, .xlsx" 
        ref="upload" 
        :multiple="true">
        <el-button 
            type="warning" 
            icon="el-icon-folder-add">
        導(dǎo)入
        </el-button>
    </el-upload>
    <el-button 
        @click="exportClick" 
        type="primary" 
        icon="el-icon-folder-opened" 
        class="export">
    導(dǎo)出
    </el-button>
</div>
<!-- 表格 -->
<div class="table">
    <el-table 
        :data="tableData" 
        border style="width: 100%" 
        id="mainTable">
    <template v-for="item in tableHeader">
        <el-table-column 
            v-if="item.label !== '在處理處分影響期內(nèi)'" 
            :prop="item.prop" 
            :label="item.label"
            align="center" 
            width="180">
        </el-table-column>
        <template v-else>
             <el-table-column 
                :prop="item.prop" 
                :label="item.label" 
                align="center" 
                width="180">
                    <el-table-column 
                        v-for="item1 in item.item" 
                        :key="item1.id" 
                        :prop="item1.prop"
                        :label="item1.label" 
                        align="center" 
                        width="180">
                     </el-table-column>
              </el-table-column>
         </template>
    </template>
    <el-table-column 
        label="操作" 
        align="center" 
        min-width="200px" 
        fixed="right">
        <template slot-scope="scope">
            <span 
                @click="edit(scope.row.id)" 
                class="inspector-operate"> 
            修改
            </span>
            <span 
                @click="dele(scope.row.id)" 
                class="inspector-operate"> 
             刪除
            </span>
            <span 
                @click="see(scope.row.id)" 
                class="inspector-operate"> 
             查看
            </span>
         </template>
    </el-table-column>
     </el-table>
 </div>

8.多級表頭導(dǎo)入數(shù)據(jù)格式配置與單級表頭不同,其他js部分相同

ifMyCriticize: ws[i]["是否在民主生活會或組織生活會進行自我批評"],
ifReport: ws[i]["是否按規(guī)定向上級部門報告處分決定執(zhí)行情況"],
ifAppraising: ws[i]["在處理處分影響期內(nèi)"],//第一項對應(yīng)Excel表頭的總表頭
ifPromotion: ws[i]["__EMPTY"],//__EMPTY為分內(nèi)容的第二個,__EMPTY_1為分內(nèi)容的第3個,__2為第4個以此類推,第一個不用寫
ifLengthenFormal: ws[i]["__EMPTY_1"],
otherHandleTest: ws[i]["其他對處理處分執(zhí)行不到位的情況"],
reformMeasureTest: ws[i]["對存在處理、處分執(zhí)行不到位情況的整改措施"],
reformTime: ws[i]["對存在處理、處分執(zhí)行不到位情況的整改時限"],

到了這里,關(guān)于vue+element UI Excel導(dǎo)入導(dǎo)出的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Vue中如何實現(xiàn)Excel導(dǎo)入導(dǎo)出

    在前面員工的添加是一個一個進行的,如果一次性添加多個員工信息,這時候就會很繁瑣 因此需要我們開發(fā)一個批量導(dǎo)入的功能,將用戶的信息存儲到 excel 中然后進行批量導(dǎo)入 1. 分析 vue-element-admin 中的導(dǎo)入方案 在vue-element-admin中,大佬已經(jīng)封裝好了Excel的導(dǎo)入導(dǎo)出方案,我

    2023年04月14日
    瀏覽(25)
  • SpringBoot和Vue實現(xiàn)Excel導(dǎo)入導(dǎo)出

    SpringBoot和Vue實現(xiàn)Excel導(dǎo)入導(dǎo)出

    hutool工具 hutool工具 瀏覽器格式 打開瀏覽器能下載Excel即成功。 3.1 測試: 通過postman測試,send之后返回true測試成功。 在Navicat刷新,可以看到新寫入的數(shù)據(jù)。

    2024年03月17日
    瀏覽(33)
  • Vue前端實現(xiàn)excel的導(dǎo)入、導(dǎo)出、打印功能

    導(dǎo)入導(dǎo)出依賴: npm install xlsx@0.16.9 npm install xlsx-style@0.8.13 --save 安裝xlsx-style,運行報錯 This relative module was not found: ./cptable in ./node_modules/xlsx-style@0.8.13@xlsx-style/dist/cpexcel.js 解決報錯 在node_modulesxlsx-styledistcpexcel.js 807行 的 var cpt = require(\\\'./cpt\\\' + \\\'able\\\'); 改為: var cpt = cptable; 打印

    2023年04月08日
    瀏覽(24)
  • 前端vue+elementui導(dǎo)出復(fù)雜(單元格合并,多級表頭)表格el-table轉(zhuǎn)為excel導(dǎo)出

    前端vue+elementui導(dǎo)出復(fù)雜(單元格合并,多級表頭)表格el-table轉(zhuǎn)為excel導(dǎo)出

    需求 :前端對el-table表格導(dǎo)出 插件 : npm install xlsx -S npm install file-saver --save 原理 :直接導(dǎo)出el-table的表格里面的數(shù)據(jù),這樣就會存在缺點,只會導(dǎo)出當(dāng)前頁面的數(shù)據(jù),如果需要導(dǎo)出全部數(shù)據(jù),可以自己重新渲染一個全部數(shù)據(jù)不可見的el-table表格,來導(dǎo)出就可以了 擴展 :經(jīng)過

    2024年02月04日
    瀏覽(31)
  • 使用JavaScript和XLSX.js將數(shù)據(jù)導(dǎo)出為Excel文件

    導(dǎo)出數(shù)據(jù)是Web應(yīng)用程序中常見的功能之一。在許多情況下,我們需要將數(shù)據(jù)導(dǎo)出為Excel文件,以便用戶可以在本地計算機上查看和編輯數(shù)據(jù)。在本篇博客中,我們將介紹如何使用JavaScript和XLSX.js將數(shù)據(jù)導(dǎo)出為Excel文件。 XLSX.js是一個JavaScript庫,它提供了一組API,可以將數(shù)據(jù)轉(zhuǎn)換

    2024年04月26日
    瀏覽(19)
  • Vue3 exceljs庫實現(xiàn)前端導(dǎo)入導(dǎo)出Excel

    Vue3 exceljs庫實現(xiàn)前端導(dǎo)入導(dǎo)出Excel

    最近在開發(fā)項目時需要批量導(dǎo)入和導(dǎo)出Excel數(shù)據(jù),在實現(xiàn)這個需求時,我們既可以在前端完成數(shù)據(jù)解析和文件生成工作,也可以通過前端發(fā)起導(dǎo)入以及導(dǎo)出請求后,后端實現(xiàn)解析文件流解析文件內(nèi)容以及生成文件并提供下載鏈接的功能。 相較于后端處理Excel數(shù)據(jù)而言,使用前

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

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

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

    2024年02月13日
    瀏覽(95)
  • vue + js 實現(xiàn)導(dǎo)出excel

    vue + js 實現(xiàn)導(dǎo)出excel

    下面是具體的步驟: **注意:**安裝的時候注意版本號

    2024年02月12日
    瀏覽(25)
  • vue通過Export2Excel.js進行導(dǎo)入excel,獲取數(shù)據(jù)

    vue通過Export2Excel.js進行導(dǎo)入excel,獲取數(shù)據(jù)

    ? import Blob from \\\'./Excel/Blob\\\' ? import Export2Excel from \\\'./Excel/Export2Excel.js\\\' ?

    2023年04月14日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包