• element-plus 导入导出


    操作

    // 参考版本 "xlsx": "^0.18.5"

    npm i xlsx

    导入

    创建文件 放入下方js

    1. /* 读取文件 */
    2. export const readFile = (file) => {
    3. return new Promise(resolve => {
    4. // FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据。
    5. let reader = new FileReader()
    6. // 该方法用于将File对象转化为二进制文件
    7. reader.readAsBinaryString(file)
    8. // 当把文件所有数据加载完毕后,把数据传给promise的下一步
    9. reader.onload = ev => {
    10. resolve(ev.target.result)
    11. }
    12. }

    创建面板

    1. <script setup>
    2. import * as xlsx from "xlsx"
    3. import { readFile } from "@/utils/readFile.js";
    4. import { ref } from 'vue'
    5. const tableData = ref([])
    6. const onChange = async (file) => {
    7. // console.log('file',file);
    8. // 获取上传excel的文件数据
    9. let dataBinary = await readFile(file.raw);
    10. // 获取工作簿对象
    11. let workBook = xlsx.read(dataBinary, { type: "binary", cellDates: true });
    12. // 获取第一个工作表的数据
    13. let workSheet = workBook.Sheets[workBook.SheetNames[0]];
    14. // 把工作表数据转为json
    15. const data = xlsx.utils.sheet_to_json(workSheet);
    16. //把json传给tableData
    17. tableData.value = data;
    18. }
    19. </script>
    20. <template>
    21. <div class="import">
    22. <!--
    23. 注意:
    24. 1. action为空
    25. 2. 添加 :auto-upload="false" ,阻止自动上传
    26. 3. 事件监听 on-change
    27. -->
    28. <el-upload class="upload-demo" action='' :auto-upload="false" :on-change="onChange">
    29. <el-button type="primary">Click to upload</el-button>
    30. </el-upload>
    31. <!-- 表格 -->
    32. <el-table :data="tableData" style="width: 100%">
    33. <el-table-column prop="username" label="用户名" width="180">
    34. </el-table-column>
    35. <el-table-column prop="age" label="年龄" width="180"> </el-table-column>
    36. <el-table-column prop="score" label="分数"> </el-table-column>
    37. </el-table>
    38. </div>
    39. </template>
    40. <style lang="scss" scoped></style>

    导出

    把导出js放入文件中

    1. import * as XLSX from "xlsx";
    2. //把json数据导出到excel文件中
    3. export function export_excel(excelData, fileName) {
    4. // 将数据写入表格中
    5. const data = XLSX.utils.json_to_sheet(excelData);
    6. // 创建工作簿
    7. const wb = XLSX.utils.book_new();
    8. // 将工作表放入工作簿中
    9. XLSX.utils.book_append_sheet(wb, data, "data");
    10. // 生成文件并下载
    11. XLSX.writeFile(wb, fileName + ".xlsx");
    12. }
    13. //把英文表头换为中文
    14. export function convert_excel_data(excelData, tHeader) {
    15. return excelData.map((item) => {
    16. const obj = {};
    17. for (const k in item) {
    18. if (tHeader[k]) {
    19. obj[tHeader[k]] = item[k];
    20. }
    21. }
    22. return obj;
    23. });
    24. }});
    25. }

    导出面板

    1. <script setup>
    2. import { convert_excel_data,export_excel } from "@/utils/exportExcel.js";
    3. //导出Excel表格的表头设置
    4. const jsonFields = {
    5. 'type': '序号',
    6. 'userName': '姓名',
    7. 'age': '年龄',
    8. 'phone': '手机号',
    9. 'createTime': '注册时间',
    10. }
    11. //json数据
    12. const tableData = [
    13. { "userName": "张三", "age": 18, "phone": 15612345612, "createTime": "2019-10-22" },
    14. { "userName": "李四", "age": 17, "phone": 15612345613, "createTime": "2019-10-23" },
    15. { "userName": "王五", "age": 19, "phone": 15612345615, "createTime": "2019-10-25" },
    16. { "userName": "赵六", "age": 18, "phone": 15612345618, "createTime": "2019-10-15" }
    17. ]
    18. // 导出excel
    19. function exportExcel(){
    20. //转换为中文表头
    21. const excelData = convert_excel_data(tableData, jsonFields);
    22. // 导出文件 '文件列表.xlsx'
    23. export_excel(excelData,"文件列表");
    24. }
    25. </script>
    26. <template>
    27. <div class="export-excel">
    28. <el-button @click="exportExcel">导出excel</el-button>
    29. </div>
    30. </template>
    31. <style lang="scss" scoped></style>

  • 相关阅读:
    java毕业设计木材产销系统的生产管理模块mybatis+源码+调试部署+系统+数据库+lw
    Go语言入门【4】循环语句
    特约|数码转型思考:Web3.0与银行
    20221203使用python3处理Google翻译英文SRT格式字幕
    小鼠与人类ID转换
    CityJSON
    提升设备可靠性:人工智能(AI)在设备维护中的应用
    省去findViewById()方法,kotlin-android-extensions插件
    新库上线 | CnOpenDataA股上市公司IPO申报发行文本数据
    PAT甲级刷题记录-(AcWing)-Day09数学(8题)
  • 原文地址:https://blog.csdn.net/2301_80137119/article/details/136392923