express中使用node-xlsx插件下载excel表格

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: express中使用node-xlsx插件下载excel表格
node-xlsx是一个轻量级的excel插件,下载导出excel基本的功能这个插件都能实现,本文记录一下express框架中使用node-xlsx插件下载excel表格的步骤。

情况一、读取本地文件并返回前端excel流文件

这种情况适用于下载excel模板场景,毕竟模板是固定的内容,我们在代码的文件夹中存放一个固定的excel模板,读取并返回即可。
  • 第一步,肯定是要下载安装这个插件npm i node-xlsx
  • 第二步,在对应代码中引入这个插件const xlsx = require('node-xlsx')
  • 第三步,就是在对应的路由url中写对应代码,代码如下:
// excel导出下载模板接口
route.get("/exportExcel", (req, res) => {

  // 首先,读取本地excel模板文件,并解析成node-xlsx插件需要的数据格式,
  // (比如我的表格文件在代码中的excel文件夹下)要引入fs文件模块才能读取哦
  const dataByParse = xlsx.parse(fs.readFileSync('./excel/统计模板.xlsx'));

  /* 
     打印出来的数据是一个数组,数组中的每一项(每一个对象)都是一个sheet数据,name属性指定的是每一个sheet的名字
     data属性是一个数组,数组中存放的是表格对应每个sheet的数据,data数组中的第一项是“表头”的数据,也可以理解为是
     第一行的数据,后面的每一项就是对应每一行“表体”的数据,具体格式,后续也会举例。
  */ 
  console.log("解析数据格式",dataByParse);

  // 最后一步,使用xlsx插件自带的build方法将解析后的数据转换成为excel表格(buffer形式的流文件)
  // 以流文件的形式返回给前端,前端接收解析下载即可
  res.send(xlsx.build(dataByParse))

})

node-xlsx需要的数据格式举例子

比如这样的数据格式,我们看一下数据结构

let excelData = [
    // 第一个sheet内容
    {
      name:"我是sheet1", // 给第一个sheet指名字 
      data:[  // 注意,这里是一个二维数组
        ["姓名","年龄","家乡","备注"], // 第一行
        ["孙悟空","500","花果山","人送外号斗战胜佛"], // 第二行
        ["猪八戒","88","高老庄","天蓬元帅"], // 第三行
      ]
    },
    // 第二个sheet内容
    {
      name:"我是sheet2", // 给第二个sheet指名字 
      data:[
        ["城市","国家","人口","经济水平"], // 同上
        ["上海","中国","14亿","越来越好"],
        ["伦敦","英国","7000万","还行"],
        ["华盛顿","美国","3.4亿","凑活"]
      ]
    }
  ]

上述数据格式对应效果图

852.png

很显然,数据结构和对应导出的excel结果都是对应的

情况二、根据前端传递参数,查询mysql数据并返回前端流文件

这种情况适用于,一次性的表格文件下载。不会占用后端磁盘文件。就是接收前端传递来的参数,然后把参数拼接sql语句。最终把数据结构组装成node-xlsx插件需要的数据格式即可
// excel导出下载模板接口
route.post("/exportExcel", (req, res) => {
  // 假设我们mysql数据库查询得到了excelData这个数据结果
  let excelData = [
    // 第一个sheet内容
    {
      name: "我是sheet1", // 给第一个sheet指名字 
      data: [
        ["姓名", "年龄", "家乡", "备注"], // 第一行
        ["孙悟空", "500", "花果山", "人送外号斗战胜佛"], // 第二行
        ["猪八戒", "88", "高老庄", "天蓬元帅"], // 第三行
      ]
    },
    // 第二个sheet内容
    {
      name: "我是sheet2", // 给第二个sheet指名字 
      data: [
        ["城市", "国家", "人口", "经济水平"], // 同上
        ["上海", "中国", "14亿", "越来越好"],
        ["伦敦", "英国", "7000万", "还行"],
        ["华盛顿", "美国", "3.4亿", "凑活"]
      ]
    }
  ]

  // excel表格内容配置单元格宽度
  let optionArr = { 
    // 指定sheet1相应宽度
    "!cols": [
      { wch: 15 },
      { wch: 15 },
      { wch: 10 },
      { wch: 50 },
    ],
    // 指定sheet2相应宽度
    "cols": [
      { wch: 15 },
      { wch: 15 },
      { wch: 10 },
      { wch: 50 },
    ],
  }

  // xlsx.build方法第二个参数接收的是单元格的配置参数
  res.send(xlsx.build(excelData,optionArr))
})

总结

本文记录的主要是后端方面的代码写法,至于前端的下载excel表格的写法和注意事项常见问题,可以参考我的另外一篇文章,传送门如下:https://juejin.cn/post/6926880294062522375

最后附上npmjs官方网站的文档实例介绍,更加齐全哟: https://www.npmjs.com/package/node-xlsx
相关文章
|
15天前
|
JavaScript 前端开发 数据可视化
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
29 2
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
|
4月前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
249 5
|
1月前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
54 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
9天前
|
人工智能 数据可视化 前端开发
Probly:开源 AI Excel表格工具,交互式生成数据分析结果与可视化图表
Probly 是一款结合电子表格功能与 Python 数据分析能力的 AI 工具,支持在浏览器中运行 Python 代码,提供交互式电子表格、数据可视化和智能分析建议,适合需要强大数据分析功能又希望操作简便的用户。
177 2
|
1月前
|
JavaScript 前端开发
Node.js 中实现多任务下载的并发控制策略
Node.js 中实现多任务下载的并发控制策略
|
1月前
|
文字识别 BI
【图片型PDF】批量识别扫描件PDF指定区域局部位置内容,将识别内容导出Excel表格或批量改名文件,基于阿里云OCR对图片型PDF识别改名案例实现
在医疗和政务等领域,图片型PDF文件(如病历、报告、公文扫描件)的处理需求广泛。通过OCR技术识别这些文件中的文字信息,提取关键内容并保存为表格,极大提高了信息管理和利用效率。本文介绍一款工具——咕嘎批量OCR系统,帮助用户快速处理图片型PDF文件,支持区域识别、内容提取、导出表格及批量改名等功能。下载工具后,按步骤选择处理模式、进行区域采样、批量处理文件,几分钟内即可高效完成数百个文件的处理。
133 8
|
4月前
|
前端开发 Java easyexcel
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
265 8
|
4月前
|
SQL 数据可视化 数据挖掘
想让Excel表格设计更美观?试试这几款好用工具!
Excel表格设计在项目管理和数据分析中至关重要。本文推荐四款辅助工具:板栗看板、Excel自动图表助手、Think-Cell Chart 和 Power BI,分别在任务管理、图表生成、数据可视化等方面表现突出,帮助你设计出更专业、美观的表格。
179 2
|
4月前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
242 4
|
5月前
|
JavaScript 前端开发 数据处理
Vue导出el-table表格为Excel文件的两种方式
Vue导出el-table表格为Excel文件的两种方式
264 6

热门文章

最新文章