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

js生成excel表格进阶版

原生方法(简单)

https://blog.csdn.net/qq_41579327/article/details/125088468?spm=1011.2415.3001.5331

纯前端方法

vue、vite、webpack环境多可用

安装

npm i exceljs

使用

import ExcelJS from 'exceljs'/*** data: [{tital1:'', tital2:'', tital3:'', tital4:'', tital5:'', tital6:'', tital7:'', tital8:'', tital9:'', tital10:'', tital11:''}...]**/
const exportExcel = async (data) => {const workbook = new ExcelJS.Workbook()const worksheet = workbook.addWorksheet('sheet1', {properties: { defaultRowHeight: 36, defaultColWidth: 20 },// 打印配置pageSetup: {horizontalCentered: true,verticalCentered: true,paperSize: 9,orientation: 'landscape',scale: 81,margins: {left: 0.25,right: 0.25,top: 0.75,bottom: 0.75,header: 0.3,footer: 0.3}}})worksheet.mergeCells('A1:K1') // 合并单元格const a1 = worksheet.getCell('A1') // 获取A1单元格a1.value = '抽查表' // 设置内容a1.alignment = { vertical: 'top', horizontal: 'center' } // 设置内容居中a1.font = { size: 20, bold: true } // 设置字体worksheet.getRow(1).height = 40 // 设置行高const a2 = worksheet.getCell('A2')a2.value = '抽查日期:'a2.alignment = { vertical: 'middle', horizontal: 'left' }a2.font = { size: 14, bold: true }worksheet.mergeCells('J2:K2')const j2 = worksheet.getCell('J2')j2.value = `统计时间:${new Date().toISOString().slice(0, 10)}`j2.alignment = { vertical: 'middle', horizontal: 'right' }j2.font = { size: 14 }worksheet.getRow(2).height = 40const header_title = ['tital1', 'tital2', 'tital3', 'tital4', 'tital5', 'tital6', 'tital7', 'tital8', 'tital9', 'tital10', 'tital11']worksheet.addRow(header_title)if (data && Array.isArray(data)) {data.forEach((item, index) => {worksheet.addRow([index + 1, item.code, item.name, item.type, item.unit, item.cangkuName, item.huoweiName, item.kucun, '', '', ''])})}const columnWidths = [7, 13, 19, 31, 12, 14, 19, 14, 11, 15, 23]columnWidths.forEach((width, index) => {worksheet.getColumn(index + 1).width = width})const alignment = {wrapText: true,vertical: 'middle',horizontal: 'center'}const borderStyle = {style: 'thin',color: { argb: 'ff000000' }}const border = {top: borderStyle,left: borderStyle,bottom: borderStyle,right: borderStyle}const data_rows = data?.length ? data.length + 3 : 13const data_cols = header_title.length || 11for (let row = 3; row <= data_rows; row++) {worksheet.getRow(row).height = 36for (let col = 1; col <= data_cols; col++) {const cell = worksheet.getCell(row, col)cell.font = { size: 12, bold: row === 3 }cell.alignment = alignmentcell.border = border // 设置边框}}const footer_rows = data_rows + 1worksheet.getRow(footer_rows).height = 30worksheet.mergeCells(`A${footer_rows}:B${footer_rows}`)const a14 = worksheet.getCell(`A${footer_rows}`)a14.value = '抽查人:'a14.font = { size: 14 }const e14 = worksheet.getCell(`E${footer_rows}`)e14.value = '核对人:'e14.font = { size: 14 }const k14 = worksheet.getCell(`K${footer_rows}`)k14.value = '准确率:'k14.font = { size: 14 }// 生成文件并下载const buffer = await workbook.xlsx.writeBuffer()saveAs(new Blob([buffer]), `导出数据_${new Date().toLocaleDateString()}.xlsx`)
}

后端nodeJS方法

使用node处理数据,再导出excel表格

安装

npm i exceljs

使用

const ExcelJS = require('exceljs')
const fs = require('fs')const exportExcel = async (data, filePath) => {const workbook = new ExcelJS.Workbook()const worksheet = workbook.addWorksheet('数据列表', {properties: { defaultRowHeight: 36, defaultColWidth: 20 },pageSetup: {horizontalCentered: true,verticalCentered: true,paperSize: 9,orientation: 'landscape',scale: 81,margins: {left: 0.25,right: 0.25,top: 0.75,bottom: 0.75,header: 0.3,footer: 0.3}}})// 按换行拆分let lines = data.split('\n').filter((line) => line.trim() !== '')const rows = lines.map((line) => line.split(' ').filter((item) => item.trim() !== ''))rows.forEach((row) => {worksheet.addRow(row)})// 设置所有单元格居中worksheet.eachRow((row) => {row.eachCell((cell) => {cell.alignment = { vertical: 'middle', horizontal: 'center' }})})const buffer = await workbook.xlsx.writeBuffer()// 保存文件fs.writeFileSync(filePath, buffer)console.log(`Excel文件已保存到 ${filePath}`)
}const str = `
故障 显示 名称 类型 复位 范围 错码 辅码
E2 E2.0 外设异常 NO.1 否 整机 x0E12 x0E120
E3 E3.0 设定错误 NO.2 是 整机 x6320 x0E130
E5 E5.0 误差过大 NO.2 是 整机 x0E15 x0E150
`exportExcel(str, './output.xlsx')


文章转载自:

http://YUay0c2L.dfwkn.cn
http://MrOmLExc.dfwkn.cn
http://2C13kLS7.dfwkn.cn
http://bBZNUxrU.dfwkn.cn
http://LbMIPNCB.dfwkn.cn
http://9boTk4mE.dfwkn.cn
http://haGQo95N.dfwkn.cn
http://MWsZIhOR.dfwkn.cn
http://JmPZZfJ9.dfwkn.cn
http://CVap0rcA.dfwkn.cn
http://X746oEmr.dfwkn.cn
http://mXpf9V9c.dfwkn.cn
http://EwyJoiv7.dfwkn.cn
http://oK3zi1iC.dfwkn.cn
http://5lnaNAmE.dfwkn.cn
http://bD52t8uM.dfwkn.cn
http://E2MMHX7n.dfwkn.cn
http://yY7yGuz6.dfwkn.cn
http://kFM9pbRE.dfwkn.cn
http://mFXXYSkT.dfwkn.cn
http://g7Q9FJaW.dfwkn.cn
http://SQytC51S.dfwkn.cn
http://dMYxnI1c.dfwkn.cn
http://DZY4rFFk.dfwkn.cn
http://AJUOgYSK.dfwkn.cn
http://9yVpM82Y.dfwkn.cn
http://tueacolp.dfwkn.cn
http://OyNYolTC.dfwkn.cn
http://HZR32SOU.dfwkn.cn
http://27byb19H.dfwkn.cn
http://www.dtcms.com/a/381655.html

相关文章:

  • Win 11 ARM 版搭建ESP-IDF环境问题记录
  • MyBatis主键返回:必须显式配置
  • MySQL——MVCC实现原理流程分析
  • Linux -- 基于TCP服务器实现一个简单的电商网站
  • 佳维视工业一体机 vs 普通电脑:工业场景选哪个?
  • 小迪安全v2023学习笔记(八十二讲)—— Java组件安全SolrShiroLog4jCVE复现
  • Spring AI(四)机构化输出
  • 单体到微服务拆分方案
  • 云端服务器使用指南:如何跨机传输较大文件(通过windows自带工具远程桌面连接 非常方便)
  • Linux 高性能 I/O 事件通知机制的核心系统调用—— `epoll_ctl`
  • 域格YM310 X09移芯CAT1模组HTTPS连接服务器
  • 连续随机变量无法用点概率描述出现了概率密度函数(Probability Density Function, PDF)
  • Go语言实战案例 — 工具开发篇:Go 实现条形码识别器
  • 洛谷-P1923 【深基9.例4】求第 k 小的数-普及-
  • DeerFlow实践:华为ITR流程的评审智能体设计
  • K均值聚类(K-Means)算法介绍及示例
  • 【企业架构】TOGAF-4A架构概览
  • 华为防火墙三层部署模式
  • Linux Kernel Core API:printk
  • 空间信息与数字技术专业主要学什么技能?
  • 遗传算法模型深度解析与实战应用
  • “开源AI智能名片链动2+1模式S2B2C商城小程序”在直播公屏引流中的应用与效果
  • C语言第五课:if、else 、if else if else 控制语句
  • mysql深入学习:主从复制,读写分离原理
  • Pandas 数据分析:从入门到精通的数据处理核心
  • Web前端面试题
  • 浅谈:数据库中的乐观锁
  • 前端开发核心技术与工具全解析:从构建工具到实时通信
  • 前端形态与样式风格:从古典到现代的视觉语言演进
  • 第5节-连接表-Full-join