vue生成word包括,文字和表格

1.下载插件

npm install file-saver
npm install docxtemplater
npm install pizzip
npm install jszip-utils
npm install angular-expressions

2.创建模板文件template.docx,放在public下面,文件内容如下

在这里插入图片描述

标题:{title}
关联数据:
名字	ID	时间
{#tableData}{name}	{ID}	{time}{/tableData}

3.创建ExportDataDocx.js

import Docxtemplater from 'docxtemplater';
import PizZip from 'pizzip';
import JSZipUtils from 'jszip-utils';
import { saveAs } from 'file-saver';
 
export const ExportDataDocx = (tempDocxPath, data, fileName) => {
  console.log(tempDocxPath, data, fileName, 111);
  var expressions = require('angular-expressions');

  expressions.filters.lower = function (input) {

    if (!input) return input;
    // toLowerCase() 方法用于把字符串转换为小写。
    return input.toLowerCase();
  };
  JSZipUtils.getBinaryContent(tempDocxPath, (error, content) => {
    if (error) {
      console.log(error);
    }
 
    // 创建一个JSZip实例,内容为模板的内容
    // let zip = new JSZip(content); //用PizZip替代
    const zip = new PizZip(content);
    // 创建并加载 Docxtemplater 实例对象
    const doc = new Docxtemplater();
    doc.loadZip(zip);
    // 设置模板变量的值
    doc.setData(data);
    try {
      // 呈现文档,会将内部所有变量替换成值,
      doc.render();
    } catch (error) {
      const e = {
        message: error.message,
        name: error.name,
        stack: error.stack,
        properties: error.properties
 
      };
      console.log({ error: e });
      // 当使用json记录时,此处抛出错误信息
      throw error;
    }
    // 生成一个代表Docxtemplater对象的zip文件(不是一个真实的文件,而是在内存中的表示)
    const out = doc.getZip().generate({
      type: 'blob',
      mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
    });
    // 将目标文件对象保存为目标类型的文件,并命名
    saveAs(out, fileName);
  });
};

4.组件中引入调用方法

tem:


 <span
              class="blue-text"
              @click="toDownload(data)"
            >
              下载
            </span>

js:

import { ExportDataDocx} from '@/utils/ExportDataDocx.js';
 // 导出word
    toDownload(data) {
     
      ExportDataDocx('/template.docx', data, `${data.title}.docx`);
      //模板地址,文件数据,文件名
       ExportDataDocx('/template.docx', data, `${data.title}.docx`);
    },

5.数据格式

 {
          title: '测试报告',
          tableData: [
            {
              name: '',
             ID:''       
              time: ''
            },
          ]
        },
Vue生成Word表格的具体步骤如下: 1. 安装依赖:首先,我们需要安装`docxtemplater``jszip`这两个插件。可以通过npm或者yarn进行安装。 ``` npm install docxtemplater jszip --save ``` 2. 导入依赖:在需要生成Word表格的组件中,导入`docxtemplater``jszip`: ```javascript import Docxtemplater from 'docxtemplater'; import JSZip from 'jszip'; ``` 3. 创建Word模板:在项目中创建一个Word模板文件,模板中使用特定的标记来代表表格中的数据。 4. 读取Word模板:使用`docxtemplater`的`load()`方法读取Word模板文件,并将其转换成docxtemplater对象。 ```javascript const fs = require('fs'); const content = fs.readFileSync('template.docx', 'binary'); const zip = new JSZip(content); const doc = new Docxtemplater(); doc.loadZip(zip); ``` 5. 准备数据:将需要显示在Word表格中的数据准备好,可以是一个对象或数组。 6. 渲染Word文档:调用docxtemplater对象的`setData()`方法,将数据传递给模板。然后通过调用`render()`方法渲染Word文档。 ```javascript doc.setData({ tableData: [ { col1: '数据1', col2: '数据2', col3: '数据3' }, { col1: '数据4', col2: '数据5', col3: '数据6' }, // 其他数据项... ], }); doc.render(); ``` 7. 导出Word表格:最后,调用docxtemplater对象的`getZip().generate()`方法导出生成Word表格文件。 ```javascript const out = doc.getZip().generate({ type: 'nodebuffer', }); fs.writeFileSync('output.docx', out); ``` 以上就是使用Vue生成Word表格的简单步骤。通过以上的操作,我们可以将数据动态地填充到Word表格中,并导出生成Word文档,以满足相关的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值