演示如何通过云函数把数据存入word模板中,源代码见cloudfunctions/genarateDocument/index.js,整个过程分为以下几个过程:(1) 创建云函数,并安装doctemplater、pizzip;(2) 读取数据库集合中的所有数据;(3) 通过doctemplater把数据写入word;(4) 把生成的word文件上传到云存储,供微信小程序端下载浏览。

云函数genarateDocument/index.js完整源代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

// 云函数入口文件

const cloud = require('wx-server-sdk')

cloud.init()

var PizZip = require('pizzip');

var Docxtemplater = require('docxtemplater');

var fs = require('fs');

var path = require('path');

 

// 云函数入口函数

exports.main = async(event, context) => {

  var content = fs.readFileSync(path.resolve(__dirname, 'template.docx'), 'binary');

  var zip = new PizZip(content);

  var doc;

  try {

    doc = new Docxtemplater(zip);

  } catch (error) {

    // Catch compilation errors (errors caused by the compilation of the template : misplaced tags)

    errorHandler(error);

  }

 

  //set the templateVariables

  doc.setData({

    teamName: 'John',

    matchItem: 'Doe',

  });

 

  try {

    // render the document (replace all occurences of {first_name} by John, {last_name} by Doe, ...)

    doc.render()

  } catch (error) {

    // Catch rendering errors (errors relating to the rendering of the template : angularParser throws an error)

    //errorHandler(error);

  }

 

  var buffer = doc.getZip()

    .generate({

      type: 'nodebuffer'

    });

 

    return  await  cloud.uploadFile({

    cloudPath: "doc.docx",

    fileContent: buffer, //excel二进制文件

  })

}

转载自:https://item.jd.com/13038316.html

 

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐