当前位置: 首页 > news >正文

exceljs读取el-upload上传的excle数据并转为json输出

当使用 Element UI 的 el-upload 组件上传 Excel 文件时,您可以使用 exceljs 库将上传的 Excel 数据转换为 JSON 格式。以下是一个示例代码,演示了如何在 Vue 项目中实现这一功能:

<template><el-uploadclass="upload-demo"action="/upload":on-success="handleSuccess":before-upload="beforeUpload"><el-button size="small" type="primary">点击上传</el-button></el-upload>
</template><script>
import ExcelJS from 'exceljs';export default {methods: {async handleSuccess(response, file, fileList) {// 读取上传的Excel文件const workbook = new ExcelJS.Workbook();await workbook.xlsx.load(file.raw);// 定义一个数组来存储JSON格式的数据const jsonData = [];// 获取第一个工作表const worksheet = workbook.getWorksheet(1);// 读取数据并转换为JSON格式worksheet.eachRow({ includeEmpty: true }, function(row, rowNumber) {if (rowNumber !== 1) { // 排除表头行let rowData = {};row.eachCell({ includeEmpty: true }, function(cell, colNumber) {// 使用单元格的列号作为JSON对象的键rowData[colNumber] = cell.value;});jsonData.push(rowData);}});// 输出JSON数据console.log(jsonData);},beforeUpload(file) {const isExcel = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';if (!isExcel) {this.$message.error('只能上传xlsx格式的文件');}return isExcel;},},
};
</script>

在上述示例中,我们使用 el-upload 组件来实现文件上传功能,并使用 exceljs 库将上传的 Excel 文件转换为 JSON 格式的数据。在 handleSuccess 方法中,我们使用 ExcelJS 的 Workbook 类来加载上传的文件,并将其转换为 JSON 格式的数据。最后,我们将转换后的 JSON 数据输出到控制台。

// utils exceljsExport.ts文件
import moment from 'moment';export const exportToExcel = (exportDataList: any, getExcelColumns: any, name: any) => {const workbook = new ExcelJS.Workbook();const worksheet = workbook.addWorksheet('Sheet1');  worksheet.columns = getExcelColumns();worksheet.addRows(exportDataList);const time = moment().format('YYYYMMDDHHmmss');workbook.xlsx.writeBuffer().then((buffer) => {let blob = new Blob([buffer], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',});saveAs(blob, `${name}_${time}.xlsx`);});
};
// vue文件
const getExcelColumns = () => {const exportAddColumns = [{ prop: 'startTime', label: '开始充电时间' },{ prop: 'phoneNumber', label: '手机号' },{ prop: 'cmsOrderId', label: '订单编号' },{ prop: 'status', label: '订单状态' }];return exportAddColumns.map((item) => {let items = {header: item.label, key: item.prop};return items;});};exportToExcel(exportDataList, getExcelColumns, '订单');

相关文章:

  • 设计模式总览
  • 英伟达狂卖50万台GPU!AI爆火背后,是显卡的争夺
  • DeDeCMS v5.7 SP2 正式版 前台任意用户密码修改(漏洞复现)
  • pytorch 代码块积累
  • pycharm 创建vue并实现简易路由功能
  • LabVIEWL实现鸟巢等大型结构健康监测
  • Java零基础-switch条件语句
  • 算法设计与实现--贪心篇
  • 笔记-基于CH579M模块通过网线直连电脑进行数据收发(无需网络)
  • 什么是Daily Scrum?
  • 1038. 从二叉搜索树到更大和树 --力扣 --JAVA
  • Java内存缓存神器:Caffeine(咖啡因)
  • 松下、书客、明基护眼台灯值不值得买?热门护眼台灯真实测评!
  • Linux shell编程学习笔记32:declare 命令
  • MacOS + Android Studio 通过 USB 数据线真机调试
  • [PHP内核探索]PHP中的哈希表
  • [译]如何构建服务器端web组件,为何要构建?
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • Debian下无root权限使用Python访问Oracle
  • JavaScript 基本功--面试宝典
  • java多线程
  • Mocha测试初探
  • Python学习之路16-使用API
  • Redux 中间件分析
  • Vim 折腾记
  • Yeoman_Bower_Grunt
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 关于使用markdown的方法(引自CSDN教程)
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 算法-图和图算法
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • #define与typedef区别
  • $ git push -u origin master 推送到远程库出错
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (SpringBoot)第二章:Spring创建和使用
  • (SpringBoot)第七章:SpringBoot日志文件
  • (分布式缓存)Redis持久化
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • .cfg\.dat\.mak(持续补充)
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .Net Winform开发笔记(一)
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • [ C++ ] STL---仿函数与priority_queue
  • [].slice.call()将类数组转化为真正的数组
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • [BZOJ1877][SDOI2009]晨跑[最大流+费用流]
  • [codeforces] 25E Test || hash
  • [EFI]Lenovo ThinkPad X280电脑 Hackintosh 黑苹果引导文件
  • [Godot] 3D拾取