vue简易导出word文档——docxtemplater使用介绍

这篇具有很好参考价值的文章主要介绍了vue简易导出word文档——docxtemplater使用介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

好久不见,上班时间 时间紧急,把领导要写的文档写好复制了一份发给大家(斜眼笑)。

一、下载依赖

npm install  docxtemplater pizzip --save  // 处理docx模板
npm install  jszip-utils --save
npm install  jszip --save   
npm install  file-saver --save  // 处理输出文件

​​二、在public文件夹下创建docx模板

Uncaught Error: Error: Can't find end of central directory : is this a zip file ? If it is, see 

如果后面步骤报错找不到模板,打开docx文档另存为覆盖当前文件即可。

三、新建js文件,加入导出实现代码

import JSZipUtils from "jszip-utils";
import docxtemplater from "docxtemplater";
import { saveAs } from "file-saver";
import PizZip from "pizzip";

export const exportWordDocx = (demoUrl, docxData, fileName) => {
    // 读取并获得模板文件的二进制内容
    JSZipUtils.getBinaryContent(
        demoUrl,
        function (error, content) {
            // 抛出异常
            if (error) {
                throw error;
            }

            // 创建一个PizZip实例,内容为模板的内容
            let zip = new PizZip(content);
            // 创建并加载docxtemplater实例对象
            let doc = new docxtemplater().loadZip(zip);
            // 去除未定义值所显示的undefined
            doc.setOptions({
                nullGetter: function () {
                    return "";
                }
            }); // 设置角度解析器
            // 设置模板变量的值,对象的键需要和模板上的变量名一致,值就是你要放在模板上的值

            doc.setData({
                ...docxData,
            });

            try {
                // 用模板变量的值替换所有模板变量
                doc.render();
            } catch (error) {
                // 抛出异常
                let e = {
                    message: error.message,
                    name: error.name,
                    stack: error.stack,
                    properties: error.properties,
                };
                console.log(JSON.stringify({ error: e }));
                throw error;
            }

            // 生成一个代表docxtemplater对象的zip文件(不是一个真实的文件,而是在内存中的表示)
            let out = doc.getZip().generate({
                type: "blob",
                mimeType:
                    "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
            });
            // 将目标文件对象保存为目标类型的文件,并命名
            saveAs(out, fileName);
        }
    );
}

四、调用页面引入方法

// exportWordDocx(导出所使用的模板的路径,导出所使用的数据,导出文件的名字);
exportWordDocx('word.docx',res,res.username + "答复书");

注意,导出所使用的模板的路径在public中,使用’/word.docx’或’word.docx’都可以导出,但是build导出后,服务器会爆404找不到文件,所以使用’word.docx

五、在docx模板中使用的使用
对于普通的字符串、数字等普通类型直接使用{}包裹住即可使用:{num}、{str}
使用判断需要加入符号并包裹:
if:{#isShow}{str}{/isShow} #开头 /结尾 isShow进行判断为true则显示str
if-else:{#isShow}{str1}{/isShow}{^isShow}{str2}{/isShow} else为 ^开头 /结尾
数组、对象的使用:
{#data}{name}{age}{address}{/data} 和判断一样的包裹方式,可以理解为先判断是否有无,有的话遍历或查找data中的name、age、address
如果是数组包字符串:
{#data}{.}{/data} 把里面指定的属性名改为 . 即可

五、导出的样式问题
模板可自动让得到的数据继承引用代码的样式:
数据 str 为 “字符串”,在模板中引入 {str}(下划线)(大括号也需要有下划线)
下载后,文件中便会有 字符串(下划线) 样式(???是csdn没有下划线的功能还是我没找到)

结束,再见,继续搬砖去了~文章来源地址https://www.toymoban.com/news/detail-632100.html

到了这里,关于vue简易导出word文档——docxtemplater使用介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue中实现将html导出为word文档

    需求:将页面整成理想样式,将想要的那一部分页面导出成word,不用写模板,按照当前页面样式导出即可。(简易版) 保姆级别教程: 第一步:安装需要的依赖 第二步:给导出那部分的容器起个id名 第三步:在需要的地方引入依赖 第四步:获取dom节点myContainer并导出(我写

    2024年02月11日
    浏览(31)
  • vue导出word文档(含ECharts,多图片,表格等)

    package.json 安装文件包      1.导入插件包   2.初始化echarts图表时  将echarts图片转为base64格式(为后续导出准备)   3.导出echarts图片,格式转换,官方自带,不需要修改  4.导出word 具体实现方法(包含发邮件,上传到服务器) 5.word文档模板 效果图:       1.如果有将文件流

    2024年02月13日
    浏览(31)
  • 【PHPWrod】使用PHPWord导出word文档

    目的:PHP通过PHPWord类库导出文件为word。 开发语言及类库:ThinkPHP、PHPWord 项目根目录使用composer安装PHPWord,安装完成后会在vendor目录下生成phpoffice文件夹,就是PHPWord类库 前端代码 PHP代码 1、前端:先使用按钮事件,在点击事件里去请求后端返回的word文件的地址(这个地址是

    2024年02月09日
    浏览(28)
  • vue 生成word表格文档 前端库介绍

             在Vue中生成Word表格文档,你可以使用一些前端库来帮助你完成这项任务。以下是几个流行的库及其简要介绍:         1. **docxtemplater**:    - **介绍**: docxtemplater是一个基于JavaScript的库,它可以处理docx和pptx模板,允许你通过JSON数据来填充模板。它支持条件、

    2024年02月21日
    浏览(35)
  • 使用若依框架和 EasyPoi 导出 Word 文档的方法详解

    若依框架是一个基于 Spring Boot 和 Vue 的快速开发平台,而 EasyPoi 是一个方便的 Java 导入导出工具库。本文将介绍如何在若依框架中使用 EasyPoi 导出 Word 文档,帮助你实现简单且高效的导出功能。 首先,我们需要在若依框架中添加 EasyPoi 的依赖。可以通过 Maven 或 Gradle 来管理依

    2024年02月13日
    浏览(97)
  • 【导出Word】如何使用Java+Freemarker模板引擎,根据XML模板文件生成Word文档(只含文本内容的模板)

    这篇文章,主要介绍如何使用Java+Freemarker模板引擎,根据XML模板文件生成Word文档。 目录 一、导出Word文档 1.1、基础知识 1.2、制作模板文件 1.3、代码实现 (1)引入依赖 (2)创建Freemarker工具类 (3)测试案例代码 (4)运行效果 Word文件有两种后缀格式,分别是:doc和docx,

    2024年02月13日
    浏览(45)
  • SpringBoot动态导出word文档(完美实整教程 复制即可使用,不能实现你找我)

    最近有一个需求是需要动态导出合同、订单等信息,导出一个word文档供客户进行下载查看。 需要导出的word文件,主要可以分为两种类型。 导出固定内容和图片的word文档 导出表格内容不固定的word文档 经过对比工具,我实践过两种实现方式。第一种是FreeMarker模板来进行填充

    2024年02月03日
    浏览(28)
  • java 导出word,java根据提供word模板导出word文档

    本文主要讲解,利用poi-tl在word中动态生成表格行,进行文字、图片填充。一共提供了两种方式,1.基于本地文件 2.基于网络文件 本文讲解思路,1.先看示例,2. 示例对应的代码展示 3. 基本概念讲解(api自行查阅文档)。 这样便于快速展示,不符合你的业务需求的可以直接划走

    2024年02月14日
    浏览(31)
  • 【Python】ChatAnywhere,ChatGPT API实现的简易版copilot,能够在word、wps、office中写文档使用,任意软件内可用

    在任意软件内使用快捷键补全选中文本,word和wps中都可以方便的使用, 在任意软件内使用 编写文档的好助手 选中文本作为上下文提示,按下快捷键 Ctrl+Alt+ 激活补全,开始后将会自动逐字输出补全的内容 word中使用 微信聊天中使用 项目链接地址:ChatAnywhere,有帮助的话记得

    2024年02月09日
    浏览(36)
  • java利用模板导出word文档

    1.依赖: 1.普通数据 2.表格 3.1编辑模板:选中区域,按ctrl+F9,右键编辑域,选择邮件合并,输入参数 参数后面加“!”可以避免参数为null而报错,  3.2.代码:  3.3展示 1.数据类型 布尔型:等价于java的Boolean类型,不同的是不能直接输出,可转化为字符串输出 日期型:等价于

    2024年02月04日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包