云函数使用云存储的word模板文件生成新的word
今天遇到一个场景是需要使用云数据库里的数据生成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这个里面的代码我在使用上发现他的文件读取会有一点问题(云环境的原因),所以做了一些改动,但是确实是帮助到我了