首先导入exceljs
<script src="https://cdn.jsdelivr.net/npm/exceljs@latest/dist/exceljs.js"></script>

var exportExcel =  async function (luckysheet) { // 参数为luckysheet.getluckysheetfile()获取的对象// 1.创建工作簿,可以为工作簿添加属性const workbook = new ExcelJS.Workbook()// 2.创建表格,第二个参数可以配置创建什么样的工作表luckysheet.every(function (table) {console.log(JSON.stringify(table.data))if (table.data.length === 0) return trueconst worksheet = workbook.addWorksheet(table.name)// 3.设置单元格合并,设置单元格边框,设置单元格样式,设置值setStyleAndValue(table.data, worksheet)setMerge(table.config.merge, worksheet)setBorder(table.config.borderInfo, worksheet)//setwidthcol(table.data, worksheet);return true})// 4.写入 bufferconst buf = await workbook.xlsx.writeBuffer();// 下载 excelworkbook.xlsx.writeBuffer().then((buf) => {let blob = new Blob([buf], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' });const downloadElement = document.createElement('a')let href = window.URL.createObjectURL(blob)downloadElement.href = hrefdownloadElement.download = document.getElementById("luckysheet_info_detail_input").value+".xlsx"; // 文件名字document.body.appendChild(downloadElement)downloadElement.click()document.body.removeChild(downloadElement) // 下载完成移除元素window.URL.revokeObjectURL(href) // 释放掉blob对象});}var setMerge = function (luckyMerge = {}, worksheet) {const mergearr = Object.values(luckyMerge)mergearr.forEach(function (elem) { // elem格式:{r: 0, c: 0, rs: 1, cs: 2}// 按开始行,开始列,结束行,结束列合并(相当于 K10:M12)worksheet.mergeCells(elem.r + 1, elem.c + 1, elem.r + elem.rs, elem.c + elem.cs)})}var setBorder = function (luckyBorderInfo, worksheet) {if (!Array.isArray(luckyBorderInfo)) returnluckyBorderInfo.forEach(function (elem) {var val=elem.value;let border = {}const luckyToExcel = {type: {'border-all': 'all','border-top': 'top','border-right': 'right','border-bottom': 'bottom','border-left': 'left'},style: {0: 'none',1: 'thin',2: 'hair',3: 'dotted',4: 'dashDot', // 'Dashed',5: 'dashDot',6: 'dashDotDot',7: 'double',8: 'medium',9: 'mediumDashed',10: 'mediumDashDot',11: 'mediumDashDotDot',12: 'slantDashDot',13: 'thick'}}if(val.t!=undefined){border['top'] = {style:luckyToExcel.style[val.t.style] , color: val.t.color}}if(val.r!=undefined){border['right'] = {style:luckyToExcel.style[val.r.style] , color: val.r.color}}if(val.b!=undefined){border['bottom'] = {style:luckyToExcel.style[val.b.style] , color: val.b.color}}if(val.l!=undefined){border['left'] = {style:luckyToExcel.style[val.l.style] , color: val.l.color}}worksheet.getCell(val.row_index + 1, val.col_index + 1).border = border})}var setStyleAndValue = function (cellArr, worksheet) {if (!Array.isArray(cellArr)) returncellArr.forEach(function (row, rowid) {const dbrow = worksheet.getRow(rowid+1);dbrow.height=luckysheet.getRowHeight([rowid])[rowid]/1.5;row.every(function (cell, columnid) {if (!cell) return trueif(rowid==0){const dobCol = worksheet.getColumn(columnid+1);dobCol.width=luckysheet.getColumnWidth([columnid])[columnid]/8;}let fill = fillConvert(cell.bg)let font = fontConvert(cell.ff, cell.fc, cell.bl, cell.it, cell.fs, cell.cl, cell.ul)let alignment = alignmentConvert(cell.vt, cell.ht, cell.tb, cell.tr)let value console.log(JSON.stringify(cell));var v='';if(cell.ct.t=='inlineStr'){var s=cell.ct.s;s.forEach(function(val,num){v+=val.v;})}else{v=cell.v;}if (cell.f) {value = { formula: cell.f, result: v }} else {value = v}let target = worksheet.getCell(rowid + 1, columnid + 1)target.fill = filltarget.font = fonttarget.alignment = alignmenttarget.value = valuereturn true}) })}var fillConvert = function (bg) {if (!bg) {return {type: 'pattern',pattern: 'solid',fgColor:{argb:'#ffffff'.replace('#','')}}}let fill = {type: 'pattern',pattern: 'solid',fgColor: {argb: bg.replace('#', '')}}return fill}var fontConvert = function (ff = 0, fc = '#000000', bl = 0, it = 0, fs = 10, cl = 0, ul = 0) { // luckysheet:ff(样式), fc(颜色), bl(粗体), it(斜体), fs(大小), cl(删除线), ul(下划线)const luckyToExcel = {0: '微软雅黑',1: '宋体(Song)',2: '黑体(ST Heiti)',3: '楷体(ST Kaiti)', 4: '仿宋(ST FangSong)', 5: '新宋体(ST Song)', 6: '华文新魏', 7: '华文行楷', 8: '华文隶书', 9: 'Arial', 10: 'Times New Roman ',11: 'Tahoma ',12: 'Verdana',num2bl: function (num) {return num === 0 ? false : true}}let font = {name:ff,family: 1,size: fs,color: {argb: fc.replace('#', '')},bold: luckyToExcel.num2bl(bl),italic: luckyToExcel.num2bl(it),underline: luckyToExcel.num2bl(ul),strike: luckyToExcel.num2bl(cl)}return font }var alignmentConvert = function (vt = 'default', ht = 'default', tb = 'default', tr = 'default') { // luckysheet:vt(垂直), ht(水平), tb(换行), tr(旋转)const luckyToExcel = {vertical: {0: 'middle',1: 'top',2: 'bottom',default: 'top'},horizontal: {0: 'center',1: 'left',2: 'right',default: 'left'},wrapText: {0: false,1: false,2: true,default: false},textRotation: {0: 0,1: 45,2: -45,3: 'vertical',4: 90,5: -90,default: 0}}let alignment = {vertical: luckyToExcel.vertical[vt],horizontal: luckyToExcel.horizontal[ht],wrapText: luckyToExcel.wrapText[tb],textRotation: luckyToExcel.textRotation[tr]}return alignment}var borderConvert = function (borderType, style = 1, color = '#000') { // 对应luckysheet的config中borderinfo的的参数if (!borderType) {return {}}const luckyToExcel = {type: {'border-all': 'all','border-top': 'top','border-right': 'right','border-bottom': 'bottom','border-left': 'left'},style: {0: 'none',1: 'thin',2: 'hair',3: 'dotted',4: 'dashDot', // 'Dashed',5: 'dashDot',6: 'dashDotDot',7: 'double',8: 'medium',9: 'mediumDashed',10: 'mediumDashDot',11: 'mediumDashDotDot',12: 'slantDashDot',13: 'thick'}}let template = {style: luckyToExcel.style[style], color: {argb: color.replace('#', '')}}let border = {}if (luckyToExcel.type[borderType] === 'all') {border['top'] = templateborder['right'] = templateborder['bottom'] = templateborder['left'] = template} else {border[luckyToExcel.type[borderType]] = template}return border}

最后调用exportExcel ()即可 ,数据量太大话不建议使用会很慢

Luckysheet导出excel相关推荐

  1. luckysheet导出excel表格(使用exceljs,支持图片)

    一.技术 exceljs;luckysheet; 参考文档:使用exceljs导出luckysheet表格_csdn_lsy的博客-CSDN博客_luckysheet 导出; https://gith ...

  2. 使用luckysheet实现excel导入导出

    luckysheet-demo: luckysheet-demoexcel导入导出实例 使用组件 1. luckysheet在线excel 2. luckyexcel excel导入插件 3. exc ...

  3. luckySheet实现Excel在线保存,导出,编辑

    本文主要介绍源码的使用方法,各位大佬根据需要观看.项目思路在另一篇文章.有问题可以和博主联系(源码不会缺东西的噢),微信(a614631315),博主有空时可免费帮忙做个远程部署啥的.(本人大一,项目 ...

  4. 工具.国内开源电子表格-Luckysheet(在线excel)

    国内开源电子表格-Luckysheet(在线excel,功能强大) – [剪辑之家] 1.背景 现在web技术蓬勃发展,办公应用特别是excel都搬到了线上,比较流行的有腾讯文档,金山文档,石墨文档, ...

  5. java struts2 excel上传_Java Struts2 实现数据库数据导出Excel文件

    HTML: 导出 Struts.xml true application/vnd.ms-excel;charset=GBK excelStream attachment;filename=${file ...

  6. Java springMVC POI 导出 EXCEL

    2019独角兽企业重金招聘Python工程师标准>>> 思路 : 将需要导出的数据存放在一个List中 创建一个EXCEL表 注意 XSSFWorkbook 只能操作2007以上的版 ...

  7. 如何优雅的导出 Excel

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:juejin.im/post/5c6b6b126fb9a04 ...

  8. Java报表工具FineReport导出EXCEL的四种API

    在实际的应用中会经常需要将数据导出成excel,导出的方式除原样导出还有分页导出.分页分sheet导出和大数据量导出.对于excel 2003版,由于限制了每个sheet的最大行数和列数,大数据量导出 ...

  9. html导出excel时换行符,ASP.NET 导出到Excel时保留换行的代码

    完整代码: protected void Button1_Click(object sender, EventArgs e) { System.Web.HttpContext curContext = ...

最新文章

  1. layuiajax提交表单控制层代码_究竟怎么用Restful风格编代码必看这篇。(二)
  2. C#获取和设置环境变量
  3. xcode项目集成CocoaPods
  4. fatal error C1083: Cannot open include file: 'ceconfig.h': No such file or directory
  5. 五皇后问题 java_Java的5个古怪问题
  6. Android项目使用Eclipse进行单元测试
  7. linux教程第五版第三章课后答案,linux 第三章 章习题.doc
  8. 年度影像旗舰vivo X70系列正式发布 售价3699元起
  9. windows下配置apache和php,Windows系统下Apache和PHP的安装和基本配置
  10. Stata:机制检验,如何判断是不是遮掩效应?
  11. oracle erp 设置文档,Oracle ERP管理手册
  12. 综合项目之闪讯破解(一)之 闪讯拨号用户名核心算法
  13. php元换成万元,元换算成万元公式(元换算成万元换算器)
  14. 基于x86汇编的飞机大战
  15. 3.2.3.2Golang的数据类型--字符串
  16. 关于python的各个常用软件——python、pycharm、anaconda
  17. 黄河小浪底调水调沙问题(mathmatica)
  18. 答案揭晓 | 关于云基础架构,你了解多少?
  19. 基于JAVAHTML5运河古城网站计算机毕业设计源码+数据库+lw文档+系统+部署
  20. 井号法(#)创建二叉树(利用前序遍历来建树)C++实现

热门文章

  1. matlab报错问题处理,函数或变量无法识别,不受支持的符号、不可见的字符或非 ASCII 字符的粘贴———卸载之前
  2. PostgreSQL安装、验证安装、pgAdmin初步简单使用
  3. SpringCloud Alibaba实战--第八篇:Seata分布式事务处理
  4. Bert中文文本多分类与传统BOW+tfidf+LR中文文本多分类对比
  5. 泰克MDO3104示波器_六合一示波器_无限多功能
  6. 中小企业如何做全网营销推广?常见的网络营销推广技巧和策略
  7. 如何恢复删除的微信记录?恢复删除记录的方法
  8. ip-guard控制台远程控制客户端的授权方式有几种?
  9. SSD固态硬盘和HDD机械硬盘的区别
  10. python--生成器