elementUI实现excel导出文件(html转excel, json转excel, aoa转excel)
需要导入依赖
npm install -S file-saver xlsx
npm install -D script-loader
html页面:
<el-button icon="el-icon-document" style="float: right;margin-top: 5px;margin-left: 5px;" circle size="mini" @click="doExportExcel"></el-button>
script代码:
import FileSaver from "file-saver";import * as XLSX from "xlsx";export default {......methods:{......
doExportExcel(){//执行表格导出为excel文件//使用json直接导出 方便了一点,也能够对数据进行处理 ,但是表单的格式不能自定义// let handleData = []......处理json数据.....//let ws = XLSX.utils.json_to_sheet(handleData)//数据放上去//wb = XLSX.utils.book_new()//XLSX.utils.book_append_sheet(wb, ws, 工作簿名称)//使用aoa进行导出 数据处理过程有点麻烦,但是可自定义性强,比较灵活......处理表头...........处理每行数据(由于aoa数据是按每一条数组的格式来导出的,所以建议使用 总数组.push(每行数组) 的方式进行处理)....let ws = XLSX.utils.aoa_to_sheet(dataArray)wb = XLSX.utils.book_new()XLSX.utils.book_append_sheet(wb, ws, 工作簿名称)//合并单元格ws["!merges"] = [{ s: { c: 0, r: 0 }, e: { c: headerList.length-1, r: 0 } }]//行高ws["!rows"] = [{ hpx: 50 }] //设置第1行行高为50像素//列宽// wb.Sheets[工作簿名称]['!cols'] = [// { wpx: 200 }, //设置第1列列宽为200像素// { wch: 50 }, //设置第2列列宽为50字符// ]//居中 不知道为什么没效果,查了一下网上有说法是 xlsx插件免费版没办法修改样式 ,能修改样式的专业版要七百多刀// ws['A1'].s={// alignment:{// horizontal:"center",// vertical:'center',// },// font: { bold: true },// }// html导出 很方便代码量很少,可惜灵活度差一点let xlsxParam = { raw: true };/* 从表生成工作簿对象 */let wb = XLSX.utils.table_to_book(document.querySelector("#tableData"),xlsxParam);/* 获取二进制字符串作为输出 */let wbout = XLSX.write(wb, {bookType: "xlsx",bookSST: true,type: "array",});try {FileSaver.saveAs(//Blob 对象表示一个不可变、原始数据的类文件对象。//Blob 表示的不一定是JavaScript原生格式的数据。//File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。//返回一个新创建的 Blob 对象,其内容由参数中给定的数组串联组成。new Blob([wbout], { type: "application/octet-stream" }),//设置导出文件名称this.templateName.slice(0, -2)+"-第"+this.currentPages+"页.xlsx");} catch (e) {if (typeof console !== "undefined") console.log(e, wbout);}return wbout;},....}
参考https://blog.csdn.net/NancyFyn/article/details/125888015
xlsx的使用 https://segmentfault.com/a/1190000041778721
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律