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

从Google Cloud Storage下载Excel返回buffer,如何获取可编辑的实际文件

解决方案

问题根源

  • 从Firebase Admin SDK下载得到的是Excel文件的原始二进制Buffer,未经过解析无法直接读取.Sheets等Excel结构属性
  • 原有代码中writeToTemplate函数误用了未定义的templateFile变量,未使用传入的文件参数
  • 写入数据后的Excel对象需要转回Buffer格式才能用于存储或传输

操作步骤

  1. 确保已安装SheetJS依赖:
npm install xlsx
  1. 在代码头部引入依赖:
import * as XLSX from 'xlsx'
  1. 修改getTemplate函数,将下载得到的Buffer解析为可操作的工作簿对象:
export const getTemplate = async (fileName: string) => {
  const fileRef = admin
    .storage()
    .bucket()
    .file('sheets/template.xlsx')

  const [fileBuffer] = await fileRef.download()
  // 解析二进制Buffer为工作簿对象
  return XLSX.read(fileBuffer, { type: 'buffer' })
}
  1. 修正writeToTemplate函数逻辑,完成数据写入后按需转回Buffer:
export const writeToTemplate = (
  objects: any[],
  sheetNames: string[],
  workbook // 传入getTemplate返回的解析后工作簿对象
) => {
  objects.forEach((dataObject, index) => {
    const sheetName = sheetNames[index]
    const worksheet = workbook.Sheets[sheetName]
    // 写入JSON数据到对应工作表,origin: -1表示追加到现有内容末尾,不需要追加可删除该配置
    XLSX.utils.sheet_add_json(worksheet, dataObject, { origin: -1 })
  })
  // 将修改后的工作簿转回xlsx格式Buffer,用于后续存储或返回
  return XLSX.write(workbook, { type: 'buffer', bookType: 'xlsx' })
}

后续操作

如果需要将修改后的Excel重新存回Firebase Storage,直接将writeToTemplate返回的Buffer传入存储SDK的对应写入方法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:45:10