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

news/2024/12/5 5:14:34/

当使用 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, '订单');


http://www.ppmy.cn/news/1260879.html

相关文章

js输入数值后自动进行搜索产品

加载JQuery文件进来 {{ ‘jquery.min.js’ | asset_url | stylesheet_tag }} <script> function validate(elem) {var value1 document.getElementById("inputminbox").value;var value2 document.getElementById("inputmaxbox").value;if (valu…

Linux AMH服务器管理面板本地安装与远程访问

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 1. Linux 安装AMH 面板2. 本地访问AMH 面板3. Linux安装…

数据库压力测试方法小结

1前言 在前面的压力测试过程中&#xff0c;主要关注的是对接口以及服务器硬件性能进行压力测试&#xff0c;评估请求接口和硬件性能对服务的影响。但是对于多数Web应用来说&#xff0c;整个系统的瓶颈在于数据库。 原因很简单&#xff1a;Web应用中的其他因素&#xff0c;例如…

想要精通GO语言?这些网站是你的最佳选择!

介绍&#xff1a;Go&#xff08;又称 Golang&#xff09;是由 Google 的 Robert Griesemer&#xff0c;Rob PGo&#xff08;又称 Golang&#xff09;是由 Google 的 Robert Griesemer&#xff0c;Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。它在2009年11月10…

HarmonyOS4.0系列——03、声明式UI、链式编程、事件方法、以及自定义组件简单案例

HarmonyOS4.0系列——03、声明式UI、链式编程、事件方法、以及自定义组件简单案例 声明式 UI ArkTS以声明方式组合和扩展组件来描述应用程序的UI&#xff0c;同时还提供了基本的属性、事件和子组件配置方法&#xff0c;帮助开发者实现应用交互逻辑。 如果组件的接口定义没有包…

为什么 AWS 数据库不讲 HTAP

在 AWS re:Invent 2023 掌门人 Adam Selipsky 的 Keynote 上&#xff0c;数据库方面最重磅的主题是 Zero-ETL&#xff0c;从 TP 数据库 (RDS, Aurora, DynamoDB) 同步数据到 AP 数据库 (Redshift)。 Zero-ETL 是 AWS 在去年 re:invent 2022 上推出的概念&#xff0c;今年则继…

【Docker】 Docker attach 命令卡死的解决方案

在启动较早期的容器时&#xff0c;出现了使用 docker attach container_name 命令后卡死的问题。本文介绍了如何解决该问题。 首先&#xff0c;在使用 docker attach container_name 命令前需要先保证容器已经开启。此时&#xff0c;输入 docker attach container_name 命令后…

UniRepLKNet:用于音频、视频、点云、时间序列和图像识别的通用感知大内核ConvNet

摘要 https://arxiv.org/abs/2311.15599 大核卷积神经网络(ConvNets)最近受到了广泛的研究关注,但存在两个未解决的关键问题需要进一步研究。(1)现有大核ConvNets的架构在很大程度上遵循传统ConvNets或Transformers的设计原则,而大核ConvNets的架构设计仍未得到充分解决。(2…