云函数使用云存储的word模板文件生成新的word
发布于 2 年前 作者 jsun 2365 次浏览 来自 分享

​ 今天遇到一个场景是需要使用云数据库里的数据生成word文件,word文件有模板,在这里做一下经验分享,如果各位大佬有其他方法,欢迎分享,下面直接上过程

1、需要的插件

使用“npm install docx-templates”命令安装

右键云函数,选择“在内建终端中打开”,执行命令

2、云函数实现

因为云函数不能直接读取云存储的文件,所以这里先下载然后读取

exports.main = async (event, context) => {
  const word = cloud.downloadFile({
    fileID:'这里使用你云存储的fileID'
  })
  const template = (await word).fileContent
  const buffer = await createReport({
    template,
    data: {
      name: '替换的内容',	// 这里的key值和你在word模板里面写的要一致,可以有多个
    },
    cmdDelimiter: ['{', '}']	// 分隔符
  })
  const time = new Date();
  const preDir = time.getFullYear()+"/"+(time.getMonth()+1)+"/"+time.getDate()
  const stringRandom = require('string-random')
  const randfilename = stringRandom(32)	//随机文件名
  const cloudPath = `templates/docx/${preDir}/${randfilename}.docx`	//文件
  return await cloud.uploadFile({
    cloudPath,
    fileContent: Buffer.from(buffer, 'hex')
  })
}

word模板文件内容(根据自己的实际使用去修改)

使用后生成的新的文件内容

备注:没有找到云函数直接操作云存储的方法,各位大神如果知道,可以发享一下,欢迎评论留言

在解决这个问题搜到的比较有用的文章链接:https://blog.csdn.net/xjc8289555/article/details/118084368这个里面的代码我在使用上发现他的文件读取会有一点问题(云环境的原因),所以做了一些改动,但是确实是帮助到我了

回到顶部