You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Exceljs生成的Profile.xlsx文件保存至public文件夹?

问题解答

需求说明

我测试了以下代码,它运行正常,已在服务器的app.js同目录下生成了"Profile.xlsx"文件。请问是否可以将Profile.xlsx文件保存/下载到"public"文件夹中?我查阅了Exceljs文档,未找到相关路径设置方法,恳请帮助。

原测试代码

const con = require("../lib/db");
const excel = require("exceljs");

const db_excel_post = (req, res, next) => {
  con.query("SELECT * FROM db", (err, details, fields) => {
    const jsonData = JSON.parse(JSON.stringify(details));

    let workbook = new excel.Workbook(); // 创建工作簿
    let worksheet = workbook.addWorksheet("Profile"); // 创建工作表

    worksheet.columns = [
      { header: "Name", key: "name", width: 10 },
      { header: "Age", key: "age", width: 10 },
      { header: "Job", key: "job", width: 20 }
    ];

    worksheet.addRows(jsonData);

    workbook.xlsx
      .writeFile("Profile.xlsx")
      .then(() => console.log("文件已保存!"));

  });
  res.redirect("/");
};

module.exports = {
  db_excel_post
};

解决方案

完全可以实现,只需修改writeFile方法的路径参数,指定为public文件夹的路径即可:

核心修改代码

// 直接指定public文件夹的相对路径,路径基于当前脚本文件所在位置
workbook.xlsx
  .writeFile("./public/Profile.xlsx")
  .then(() => console.log("文件已保存到public文件夹!"));

注意事项

  1. 确保项目根目录下已存在public文件夹,若不存在需提前创建,否则会触发文件写入错误
  2. 如果当前脚本文件和public文件夹不在同一层级,需调整相对路径。比如脚本在routes文件夹下,路径应改为../public/Profile.xlsx
  3. 若要支持用户直接下载生成的文件,可在文件写入完成后,通过Express的res.download方法返回文件给客户端,示例如下:
workbook.xlsx.writeFile("./public/Profile.xlsx")
  .then(() => {
    console.log("文件已保存!");
    // 触发客户端下载文件
    res.download("./public/Profile.xlsx", "Profile.xlsx", (err) => {
      if (err) {
        console.error("下载失败:", err);
        res.redirect("/");
      }
    });
  })
  .catch((err) => {
    console.error("文件写入失败:", err);
    res.redirect("/");
  });

内容的提问来源于stack exchange,提问作者Titan XP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 16:31:05