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

【vue+exceljs+file-saver】纯前端:下载excel和上传解析excel

文章目录

    • 场景
    • 依赖
    • 下载
    • 上传并解析

场景

需要:

  • 下载一个固定模板excel
  • 上传一个excel,并解析其内容

参考:前端导出Excel【支持样式配置,多sheet,多级表头】在我们的管理系统项目中,将表格数据导出为Excel文件是很常见 - 掘金

依赖

exceljs file-saver

exceljs - npm — exceljs - npm
file-saver - npm

下载

封装一个下载的方法。

import ExcelJS from 'exceljs'
// @ts-ignore
import saveAs from 'file-saver'
export const exportExcel = (header: string[], data: number[][]) => {// 创建excel工作簿const workbook = new ExcelJS.Workbook()const worksheet = workbook.addWorksheet('Sheet1')// 表头worksheet.addRow(header)// 数据data.forEach((item) => {worksheet.addRow(item)})// 生成二进制数据导出workbook.xlsx.writeBuffer().then((buffer) => {const blob = new Blob([buffer], { type: 'application/octet-stream' })saveAs(blob, '模板.xlsx')})
}

调用:

const handleDownloadTempExcel = () => {const headers = ['序号', '测试剧-章节ID', '对照剧-章节ID']const datas = [[0, 75912, 75848],[1, 75913, 75849],[2, 75914, 75850],[3, 75915, 75851],[4, 75916, 75852],]exportExcel(headers, datas)
}

效果:

在这里插入图片描述

上传并解析

上传使用原生的控件。点击按钮,模拟原生控件input 的点击。让input控件隐藏。

        <inputref="uploadExcel"hiddentype="file"accept=".xlsx,.xls,.csv"@change="handleUploadChapter"/><el-buttonstyle="margin-left: 8px"type="success"@click="handleClickUpload">上传</el-button>
const handleClickUpload = () => {uploadExcel.value?.click()
}

在这里写上传文件的方法:

const handleUploadChapter = async (event: Event) => {const target = event.target as HTMLInputElementconst files = target.filesif (!files) {return}uploadFile.value = files[0]const list = await excelToList(uploadFile.value)// ....
}

将解析excel封装成一个方法:把excel解析成数组。

在这里插入图片描述

export const excelToList = async (file: File) => {const workbook = new ExcelJS.Workbook()await workbook.xlsx.read(file.stream())const sheet = workbook.worksheets[0]const excelData: string[][] = []sheet.eachRow((row) => {const list: string[] = []row.eachCell((cell) => {list.push(cell.value?.toString() || '')})excelData.push(list)})return excelData
}

文章转载自:

http://II8dsyv6.tzzxs.cn
http://CAdk5vqZ.tzzxs.cn
http://I1qxAsse.tzzxs.cn
http://DuksDu7X.tzzxs.cn
http://QH4B2RSU.tzzxs.cn
http://FMeXmrHY.tzzxs.cn
http://Mp3xMw9w.tzzxs.cn
http://D3thtbxi.tzzxs.cn
http://OorAmshS.tzzxs.cn
http://jaYMJMHv.tzzxs.cn
http://BCzkVsTV.tzzxs.cn
http://VR9ebCOB.tzzxs.cn
http://1SVONjf1.tzzxs.cn
http://D1VXaXK8.tzzxs.cn
http://xjKNGDsv.tzzxs.cn
http://rtOCfQVd.tzzxs.cn
http://mV4R6AT9.tzzxs.cn
http://nos0yY9h.tzzxs.cn
http://zRv1k3dq.tzzxs.cn
http://kGv1WcRO.tzzxs.cn
http://T4ct94ru.tzzxs.cn
http://MsIhiYTX.tzzxs.cn
http://3EluluXq.tzzxs.cn
http://f3DNcxQ5.tzzxs.cn
http://SmpZcHic.tzzxs.cn
http://yOr6JgWF.tzzxs.cn
http://GsBZCTyX.tzzxs.cn
http://sbnKx8yv.tzzxs.cn
http://LNb986Pe.tzzxs.cn
http://diyjRGGH.tzzxs.cn
http://www.dtcms.com/a/388199.html

相关文章:

  • 国产化Excel开发组件Spire.XLS教程:使用 Python 设置 Excel 格式,从基础到专业应用
  • Parasoft以高标准测试助力AEW提升汽车软件质量
  • el-date-picker时间选择器限制时间跨度为3天
  • 35.Socket网络编程(UDP)(下)
  • 【前沿技术Trip Three】正则表达式
  • 多平台数据交换解耦方案选型
  • ​​[硬件电路-239]:从电阻器的高频等效模型,看高频信号的敏感性,电路的性能受到频率的影响较大
  • Java 中的 23 种设计模式详解
  • 《2025年AI产业发展十大趋势报告》六十二
  • 【字节跳动】LLM大模型算法面试题:大模型 LLM的架构介绍?
  • 【C++】类成员访问控制
  • 彩笔运维勇闯机器学习--梯度下降法
  • 正点原子zynq_FPGA学习笔记-vivado安装
  • 基于yolov8/yolo11的视觉识别算法使用和详解
  • 2025年数据科学与大数据技术和统计学有什么区别?
  • STM32H743-ARM例程2-GPIO点亮LED
  • 每天五分钟深度学习:深层神经网络的前向传播算法和反向传播算法
  • 【LeetCode】41. 缺失的第一个正数
  • Linux系统指令之 —— ip route route
  • 嵌入式硬件笔记:三种滤波电路的对比
  • webrtc弱网-InterArrivalDelta类源码分析与算法原理
  • 第6章:计算机内存实战
  • 模型压缩与量化实战:将BERT模型缩小4倍并加速推理
  • RS485 与 CAN 通讯:选哪个更合适?
  • 腾讯微保社招笔试
  • centos系统安装mysql8
  • Go语言垃圾回收器深入解析
  • 大模型的领域知识注入的四种路径
  • 寻找高速传输新选择:当传统方案不再满足现代企业需求
  • (CV方向)视频理解前沿:基于TimeSformer的时空注意力模型实战