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

vue下的xlsx文件导出和导入的写法

1.导出:

 <el-button class="add_box" @click="exportToExcel"><div><svg-icon icon-class="excel" style="font-size: 15px !important;vertical-align: text-top;"></svg-icon><p>导出</p></div></el-button>// 导出Excel表// 表格数据写入excel,并导出为Excel文件private async exportToExcel() {const XLSX = require('xlsx')// 使用 this.$nextTick 是在dom元素都渲染完成之后再执行this.$nextTick(function () {// 设置导出的内容是否只做解析,不进行格式转换     false:要解析, true:不解析const xlsxParam = { raw: true }const wb = XLSX.utils.table_to_book(document.querySelector('#oIncomTable'), xlsxParam)// 导出excel文件名let fileName = `${this.$t('i18n.route_flometerInAreawatch')}` + new Date().getTime() + '.xlsx'const wbout = XLSX.write(wb, {bookType: 'xlsx',bookSST: true,type: 'array'})try {// 下载保存文件FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), fileName)} catch (e) {if (typeof console !== 'undefined') {console.log(e, wbout)}}return wbout})}

2.导入

//当前的代码是用于 导出 .xlsx 文件 的,想实现 导入 .xlsx 文件并解析数据 的功能1.在 strappingTable.vue 的 <template> 中添加一个隐藏的 <input type="file"> 控件:<input type="file" id="xlsxFileInput" accept=".xlsx, .xls" style="display: none" @change="handleImportExcel" />2.绑定“导入”按钮事件<el-button class="add_box" @click="$el.querySelector('#xlsxFileInput').click()"><div><svg-icon icon-class="example"></svg-icon><p>导入</p></div>
</el-button>3.编写 handleImportExcel 方法private async handleImportExcel(e: Event) {const XLSX = require('xlsx')const target = (e.target as HTMLInputElement)if (!target || !target.files || target.files.length === 0) {this.$message.warning('请选择一个 Excel 文件')return}const file = target.files[0]const reader = new FileReader()reader.onload = (event) => {try {const data = event.target?.resultconst workbook = XLSX.read(data, { type: 'array' })const sheetName = workbook.SheetNames[0]const worksheet = workbook.Sheets[sheetName]// 解析为 JSON 格式(自动匹配表头)const jsonData = XLSX.utils.sheet_to_json(worksheet)// 假设你要更新表格数据this.tableData = jsonData.map(item => ({height: item['高度'] || item.height,volume: item['容积'] || item.volume}))this.$message.success('导入成功')} catch (error) {console.error('导入失败:', error)this.$message.error('导入失败,请检查文件格式')}}reader.readAsArrayBuffer(file)
}

相关文章:

  • java(JDBC)
  • [Blender] 高质量材质推荐第四弹:25-30号精选纹理资源详解
  • [MSPM0开发]MSPM0G3507之GPIO输入、输出、中断使用(基于driverlib库)
  • 销售预测的方法与模型(二)丨商品与库存分类——基于数据模型运营的本质和底层逻辑销售
  • 机器学习算法——朴素贝叶斯和特征降维
  • 名称 深度学习(监督学习) Iteration 一次 mini-batch 前向+反向传播更新 Epoch 所有数据集训练一遍。这两个概念不一样吗?
  • 图像分割技术:像素级的精准识别(superior哥深度学习系列第12期)
  • Vue3项目与桌面端(C++)通过Websocket 对接接口方案实现
  • GPIO简介(GPIO输出)
  • Metastore 架构示意图和常用 SQL
  • HINet: Half Instance Normalization Network for Image Restoration论文阅读
  • 使用Optimization tool优化后禁用windows更新批量的脚本
  • 前端加密当日
  • 怎样下载某个SCI期刊的endnote style?答:直接去endnote官网搜索期刊名称并下载即可
  • 面向对象 设计模式简述(1.创建型模式)
  • 16、企业预算管理(Budget)全流程解析:从预算编制到预算控制
  • git merge合并分支push报错:Your branch is ahead of ‘xxx‘ by xx commits.
  • 【unitrix】1.2 unitrix 物理量计算库(lib.rs)
  • AIAgent,Prompt,MCP是什么?
  • AUTOSAR图解==>AUTOSAR_TR_FrancaIntegration
  • wordpress美女图片站源码/江小白网络营销案例
  • 笔记本做系统哪个网站好/在线外链工具
  • 国外建设网站流程/免费网站排名优化在线
  • 网站推广策划公司/互联网营销师考试内容
  • 用什么做网站后台的/搜索引擎推广的常见形式有
  • 2003总是说网站建设中/营销活动有哪些