赞
踩
面试前要精心做好准备,简历上写的知识点和原理都需要准备好,项目上多想想难点和亮点,这是面试时能和别人不一样的地方。
还有就是表现出自己的谦虚好学,以及对于未来持续进阶的规划,企业招人更偏爱稳定的人。
万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
前端面试题汇总
JavaScript
前端资料汇总
前言
这是一个常用的功能,就是导入和导出excel表格
但是时常会遇到一些复杂表头的表格导出和导入
比如我这个案例里面的三层表头的表格。
网上看了下发现了一个非常简单导出和导入方法
当然这个是纯前端的版本,会出现分页不好下载的情况。所以实际工作中,导出还是后端负责的。
效果图
这里是表格的样式,三层表头
这里是点击导出后的效果和表格格式
这里是点击导入后的效果和获取的数据格式
使用方法简介
1,要下载一个插件,输入这个指令:npm install -S file-saver xlsx
2,在页面中引入这个,直接在你需要写导入导出的表格页面写就行
3,给你的表格绑上这个id。用来导出的时候拿数据的
这里如果想要导入后获取数据传给后端,就在这个位置把他循环push到一个新数组内,然后在循环外面把这个数组传给后端
<template> <div> <div class="titleBtn"> <!-- 导出Excel --> <el-button @click="exportClick" type="primary" size="small" style="margin: 0 20px" icon="el-icon-folder-opened" >导出</el-button > <!-- 导入Excel --> <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" size="small" >导入</el-button > </el-upload> </div> <el-table :data="tableData" style="width: 100%" id="mainTable"> <el-table-column prop="date" label="日期" width="150"> </el-table-column> <el-table-column label="配送信息"> <el-table-column prop="name" label="姓名" width="120"> </el-table-column> <el-table-column label="地址"> <el-table-column prop="province" label="省份" width="120"> </el-table-column> <el-table-column prop="city" label="市区" width="120"> </el-table-column> <el-table-column prop="address" label="地址" width="300"> </el-table-column> <el-table-column prop="zip" label="邮编" width="120"> </el-table-column> </el-table-column> </el-table-column> </el-table> </div> </template> <script> import FileSaver from "file-saver"; import * as XLSX from "xlsx"; export default { data() { return { tableData: [ { date: "2016-05-02", name: "王小虎", province: "上海", city: "普陀区", address: "上海市普陀区金沙江路 1518 弄", zip: 200333, }, ], }; }, methods: { //导出 exportClick() { //第一个参数是到处后文件名,第二个是id绑定表格dom this.exportExcel("test", "mainTable"); }, //转换数据 exportExcel(filename, tableId) { var xlsxParam = { raw: true }; // 导出的内容只做解析,不进行格式转换 var table = document.querySelector("#" + tableId).cloneNode(true); 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; }, //导入 onChange(file, fileList) { this.readExcel(file); // 调用读取数据的方法 }, // 读取数据 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 = (ev) => { try { const data = ev.target.result; const workbook = XLSX.read(data, { type: "binary", }); if (workbook.SheetNames.length >= 1) { this.$message({ message: "导入数据表格成功", showClose: true, type: "success", }); } const wsname = workbook.SheetNames[0]; //取第一张表 const ws = XLSX.utils.sheet_to_json(workbook.Sheets[wsname]); //生成json表格内容 console.log("生成json:", ws); // that.tableData = []; for (var i = 2; i < ws.length; i++) { let sheetData = { // 键名为绑定 el 表格的关键字,值则是 ws[i][对应表头名] date: ws[i]["日期"], name: ws[i]["配送信息"], province: ws[i]["__EMPTY"], city: ws[i]["__EMPTY_1"], address: ws[i]["__EMPTY_2"], zip: ws[i]["__EMPTY_3"], }; console.log("上传的数据:", sheetData); //添加到表格中 that.tableData.push(sheetData); //正常导入需要拿到上传的数据就在这从新弄个数组push进去,然后传给后台,后台保存后查询表格返给前端。 } this.$refs.upload.value = ""; } catch (e) { console.log(e); return false; } }; // 如果为原生 input 则应是 files[0] fileReader.readAsBinaryString(file.raw); }, }, }; </script> <style scoped> .titleBtn { display: flex; margin: 20px 0; } </style>
因为上面的纯前端写法有一个问题,就是有分页的时候我们没法拿到数据。
或者数据太大了我们下载实在是有点慢和卡。所以基本上工作中都是后端生成下载链接导出的。
面试前要精心做好准备,简历上写的知识点和原理都需要准备好,项目上多想想难点和亮点,这是面试时能和别人不一样的地方。
还有就是表现出自己的谦虚好学,以及对于未来持续进阶的规划,企业招人更偏爱稳定的人。
万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
为了帮助大家更好更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。
前端面试题汇总
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。