精华内容
下载资源
问答
  • 摘要:之前项目中导出价格表是由后端实现,前端只需要调用接口下载word即可,后来业务改变比较大,word模版需要一直改动,后端改起来相对麻烦,后来直接前端自己定义模版,实现下载word文档。一、需要安装的依赖1、...

    摘要:之前项目中导出价格表是由后端实现,前端只需要调用接口下载word即可,后来业务改变比较大,word模版需要一直改动,后端改起来相对麻烦,后来直接前端自己定义模版,实现下载word文档。

    一、需要安装的依赖

    1、docxtemplater

    介绍:docxtemplater是一种邮件合并工具,它以编程方式使用,处理条件、循环,并且可以扩展为表格、HTML、图像等。

    安装方法:cnpm i docxtemplater@^3.9.1

    2、FileSaver

    介绍:FileSaver.js 是在客户端保存文件的解决方案,非常适合需要生成文件,或者保存不应该发送到外部服务器的敏感信息的应用。

    安装方法:cnpm i file-saver@^1.3.8

    3、jszip

    介绍:jszip是一个用于创建、读取和编辑.zip文件的JavaScript库,且API的使用也很简单。

    安装方法:cnpm i jszip@^2.6.1

    4、jszip-utils

    介绍:jszip-utils是与jszip一起使用的跨浏览器的工具库

    安装方法:cnpm i jszip-utils@^0.0.2

    二、创建word模版

    介绍:根据自己的业务需求创建需要导出的word模版,变量数据使用{变量名}代替,表格内容数据需要使用{#参数名}开始{/参数名}结尾,具体如下图:

    注意点:1.模板文件使用vue-cli2的时候,放在static目录下。使用vue-cli3的时候,放在public目录下。

    2.文件须以docx结尾。

    不然可能出现的问题:提示Uncaught Error: Corrupted zip: missing 7124 bytes.

    vue-cli3示例位置如图:

    三、html代码编写

    定义下载事件downloadprice

    下载价格表

    展开全文
  • vue 前端导出word、excel、pdf

    千次阅读 2019-07-17 11:11:29
    项目中有一个新需求,需要将页面导出为pdf、word、excel三种格式,用户可根据需要选择下载。查找了很多方法,最终选择了别人已经写好的插件。 三种格式都需要使用的插件有FileSaver npm install --save xlsx file-...

    本文中使用的是vue+element搭建的项目,项目中有一个新需求,需要将页面导出为pdf、word、excel三种格式,用户可根据需要选择下载。查找了很多方法,最终选择了别人已经写好的插件。特此写下此文,便于日后使用和学习交流。

    三种格式都需要使用的插件有FileSaver

    npm install --save xlsx file-saver
    

    页面样式:
    在这里插入图片描述

    一、导出excel文件

    excel文件导出的格式是最符合要求的,数据表格分类清晰,无乱码和错位现象。

    1.首先确认vue项目已经成功搭建,element等已经下载并在组件内进行引用,excel格式导出需下载XLSX插件,然后在需要使用的组件内的script标签中进行引入

    import FileSaver from "file-saver";
    import XLSX from "xlsx";
    
    下载方法为:
    methods: {
        downLoad(){
          var wb = XLSX.utils.table_to_book(document.querySelector("#file"));
            var wbout = XLSX.write(wb, {
              bookType: "xlsx",
              bookSST: true,
              type: "array"
            });
            try {
              FileSaver.saveAs(
                new Blob([wbout], { type: "application/octet-stream" }),
                "表格"+ ".xlsx" //  name+'.xlsx'表示导出的excel表格名字
              );
            } catch (e) {
              if (typeof console !== "undefined") console.log(e, wbout);
            }
            return wbout;
        }
      }
    

    最终导出样式如图:
    在这里插入图片描述
    参考链接:https://blog.csdn.net/weixin_42429288/article/details/84140654

    二、导出pdf文件
    首先需要安装两个依赖
    第一个.将页面html转换成图片

    npm install --save html2canvas 
    

    第二个.将图片生成pdf

    npm install jspdf --save
    

    然后创建一个htmlToPdf.js文件,在需要使用的组件内进行引入,htmlToPdf.js内容如下:

    import html2canvas from 'html2canvas'
    import jsPDF from 'jspdf'
    export default{
        install (Vue, options) {
            Vue.prototype.getPdf = function (htmlTitle,currentTime) {
                var element = document.getElementById("file");
                html2canvas(element, {
                    logging:false
                }).then(function(canvas) {
                    var pdf = new jsPDF('p', 'mm', 'a4');    //A4纸,纵向
                    var ctx = canvas.getContext('2d'),
                        a4w = 190, a4h = 277,    //A4大小,210mm x 297mm,四边各保留10mm的边距,显示区域190x277
                        imgHeight = Math.floor(a4h * canvas.width / a4w),    //按A4显示比例换算一页图像的像素高度
                        renderedHeight = 0;
    
                while(renderedHeight < canvas.height) {
                    var page = document.createElement("canvas");
                    page.width = canvas.width;
                    page.height = Math.min(imgHeight, canvas.height - renderedHeight);//可能内容不足一页
    
                    //用getImageData剪裁指定区域,并画到前面创建的canvas对象中
                    page.getContext('2d').putImageData(ctx.getImageData(0, renderedHeight, canvas.width, Math.min(imgHeight, canvas.height - renderedHeight)), 0, 0);
                    pdf.addImage(page.toDataURL('image/jpeg', 1.0), 'JPEG', 10, 10, a4w, Math.min(a4h, a4w * page.height / page.width));    //添加图像到页面,保留10mm边距
    
                    renderedHeight += imgHeight;
                    if(renderedHeight < canvas.height)
                        pdf.addPage();//如果后面还有内容,添加一个空页
                }
                
                pdf.save(htmlTitle);
            });
        }
    }
    }
    

    成功引入后,在组件内直接调用该方法

    methods: {
        downLoad(){
          this.getPdf('表格');//参数是下载的pdf文件名
        }
      }
    

    下载格式如下:
    在这里插入图片描述
    导出的时候button按钮放在了选择器内,所以下载的文件包含了button,实际可根据自己的需求进行适当的修改,另外和我们日常看到的pdf文件有一定区别,但目前就我查阅到的纯前端导出pdf文件应该算比较好的效果了。
    注意,js里面的dom操作选择器应该和要下载的dom选择器一致。
    参考链接:https://blog.csdn.net/pratise/article/details/79249943

    三、导出word文件
    使用的是jquery的插件export进行导出。所以需要先安装jquery,
    首先安装jquery

    npm install jquery --save
    

    在项目 build 里的webpack.base.conf.js 里加载webpack文件,注意,要放在配置文件第一行;

    const  webpack = require('webpack')
    

    在module.exports的最后加入

    // 添加代码
    plugins: [
     new webpack.ProvidePlugin({
    $: "jquery",
    jQuery: "jquery",
    jquery: "jquery",
    "window.jQuery": "jquery"
     })
    ],
    

    1.引入jquery

    import $ from "jquery"
    

    2.引入exportJs

    import wordExport from '@/utils/jquery.word.export'
    

    我将export.js放在src的utils文件夹下,内容如下

    //导入js文件
    import saveAs from "file-saver"
    import $ from "jquery"
     
    if (typeof jQuery !== "undefined" && typeof saveAs !== "undefined") {
        (function() {
            $.fn.wordExport = function(fileName,rules) {
                fileName = typeof fileName !== 'undefined' ? fileName : "jQuery-Word-Export";
                var static_ = {
                    mhtml: {
                        top: "Mime-Version: 1.0\nContent-Base: " + location.href + "\nContent-Type: Multipart/related; boundary=\"NEXT.ITEM-BOUNDARY\";type=\"text/html\"\n\n--NEXT.ITEM-BOUNDARY\nContent-Type: text/html; charset=\"utf-8\"\nContent-Location: " + location.href + "\n\n<!DOCTYPE html>\n<html>\n_html_</html>",
                        head: "<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n<style>\n_styles_\n</style>\n</head>\n",
                        body: "<body>_body_</body>"
                    }
                };
                var options = {
                    maxWidth: 624
                };
                // Clone selected element before manipulating it
                var markup = $(this).clone();
    
    
            // Remove hidden elements from the output
            markup.each(function() {
                var self = $(this);
                if (self.is(':hidden'))
                    self.remove();
            });
    
            // Embed all images using Data URLs
            var images = Array();
            var img = markup.find('img');
            for (var i = 0; i < img.length; i++) {
                //如果导出的word文件里面包含线上的图片
                // Calculate dimensions of output image
                var width = Math.min(img[i].width, options.maxWidth);
                var height = img[i].height * (width / img[i].width);
                // Create canvas for converting image to data URL
                //这是添加的代码--------------------------------------------
                var img_id = "#"+img[i].id;
                $('<canvas>').attr("id", "test_word_img_" + i).width(width).height(height).insertAfter(img_id);
    
               /*
               //如果导出的word文件里面包含本地图片用这一段,如果都包含,要另外研究一下
               // Calculate dimensions of output image
                var w = Math.min(img[i].width, options.maxWidth);
                var h = img[i].height * (w / img[i].width);
                // Create canvas for converting image to data URL
                var canvas = document.createElement("CANVAS");
                canvas.width = w;
                canvas.height = h;
                // Draw image to canvas
                var context = canvas.getContext('2d');
                context.drawImage(img[i], 0, 0, w, h);
                // Get data URL encoding of image
                var uri = canvas.toDataURL("image/png");
                $(img[i]).attr("src", img[i].src);
                img[i].width = w;
                img[i].height = h;
                // Save encoded image to array
                images[i] = {
                    type: uri.substring(uri.indexOf(":") + 1, uri.indexOf(";")),
                    encoding: uri.substring(uri.indexOf(";") + 1, uri.indexOf(",")),
                    location: $(img[i]).attr("src"),
                    data: uri.substring(uri.indexOf(",") + 1)
                };
                */
            }
    
            // Prepare bottom of mhtml file with image data
            var mhtmlBottom = "\n";
            for (var i = 0; i < images.length; i++) {
                mhtmlBottom += "--NEXT.ITEM-BOUNDARY\n";
                mhtmlBottom += "Content-Location: " + images[i].location + "\n";
                mhtmlBottom += "Content-Type: " + images[i].type + "\n";
                mhtmlBottom += "Content-Transfer-Encoding: " + images[i].encoding + "\n\n";
                mhtmlBottom += images[i].data + "\n\n";
            }
            mhtmlBottom += "--NEXT.ITEM-BOUNDARY--";
    
            //TODO: load css from included stylesheet
            var styles = rules;
    
            // Aggregate parts of the file together
            var fileContent = static_.mhtml.top.replace("_html_", static_.mhtml.head.replace("_styles_", styles) + static_.mhtml.body.replace("_body_", markup.html())) + mhtmlBottom;
    
            // Create a Blob with the file contents
            var blob = new Blob([fileContent], {
                type: "application/msword;charset=utf-8"
            });
            saveAs.saveAs(blob, fileName + ".doc");
        };
    })(jQuery);
    } else {
        if (typeof jQuery === "undefined") {
            console.error("jQuery Word Export: missing dependency (jQuery)");
        }
        if (typeof saveAs === "undefined") {
            console.error("jQuery Word Export: missing dependency (FileSaver.js)");
        }
    }
    

    然后在组件内调用方法

    downLoad(){
          $("#pdfDom").wordExport('表格');//参数是下载的word文件名
        }
    

    文章中主要代码如下:
    在这里插入图片描述
    参考链接:https://blog.csdn.net/sinat_37984999/article/details/81164818
    在此感谢各位大佬的奉献的方法!

    展开全文
  • 摘要:之前项目中导出价格表是由后端实现,前端只需要调用接口下载word即可,后来业务改变比较大,word模版需要一直改动,后端改起来相对麻烦,后来直接前端自己定义模版,实现下载word文档。一、需要安装的依赖1、...

    摘要:之前项目中导出价格表是由后端实现,前端只需要调用接口下载word即可,后来业务改变比较大,word模版需要一直改动,后端改起来相对麻烦,后来直接前端自己定义模版,实现下载word文档。

    一、需要安装的依赖

    1、docxtemplater

    介绍:docxtemplater是一种邮件合并工具,它以编程方式使用,处理条件、循环,并且可以扩展为表格、HTML、图像等。

    安装方法:cnpm i docxtemplater@^3.9.1

    2、FileSaver

    介绍:FileSaver.js 是在客户端保存文件的解决方案,非常适合需要生成文件,或者保存不应该发送到外部服务器的敏感信息的应用。

    安装方法:cnpm i file-saver@^1.3.8

    3、jszip

    介绍:jszip是一个用于创建、读取和编辑.zip文件的JavaScript库,且API的使用也很简单。

    安装方法:cnpm i jszip@^2.6.1

    4、jszip-utils

    介绍:jszip-utils是与jszip一起使用的跨浏览器的工具库

    安装方法:cnpm i jszip-utils@^0.0.2

    二、创建word模版

    介绍:根据自己的业务需求创建需要导出的word模版,变量数据使用{变量名}代替,表格内容数据需要使用{#参数名}开始{/参数名}结尾,具体如下图:

    注意点:1.模板文件使用vue-cli2的时候,放在static目录下。使用vue-cli3的时候,放在public目录下。

    2.文件须以docx结尾。

    不然可能出现的问题:提示Uncaught Error: Corrupted zip: missing 7124 bytes.

    vue-cli3示例位置如图:

    三、html代码编写

    定义下载事件downloadprice

    下载价格表

    展开全文
  • 摘要:之前项目中导出价格表是由后端实现,前端只需要调用接口下载word即可,后来业务改变比较大,word模版需要一直改动,后端改起来相对麻烦,后来直接前端自己定义模版,实现下载word文档。一、需要安装的依赖1、...

    摘要:之前项目中导出价格表是由后端实现,前端只需要调用接口下载word即可,后来业务改变比较大,word模版需要一直改动,后端改起来相对麻烦,后来直接前端自己定义模版,实现下载word文档。

    一、需要安装的依赖

    1、docxtemplater

    介绍:docxtemplater是一种邮件合并工具,它以编程方式使用,处理条件、循环,并且可以扩展为表格、HTML、图像等。

    安装方法:cnpm i docxtemplater@^3.9.1

    2、FileSaver

    介绍:FileSaver.js 是在客户端保存文件的解决方案,非常适合需要生成文件,或者保存不应该发送到外部服务器的敏感信息的应用。

    安装方法:cnpm i file-saver@^1.3.8

    3、jszip

    介绍:jszip是一个用于创建、读取和编辑.zip文件的JavaScript库,且API的使用也很简单。

    安装方法:cnpm i jszip@^2.6.1

    4、jszip-utils

    介绍:jszip-utils是与jszip一起使用的跨浏览器的工具库

    安装方法:cnpm i jszip-utils@^0.0.2

    二、创建word模版

    介绍:根据自己的业务需求创建需要导出的word模版,变量数据使用{变量名}代替,表格内容数据需要使用{#参数名}开始{/参数名}结尾,具体如下图:

    注意点:1.模板文件使用vue-cli2的时候,放在static目录下。使用vue-cli3的时候,放在public目录下。

    2.文件须以docx结尾。

    不然可能出现的问题:提示Uncaught Error: Corrupted zip: missing 7124 bytes.

    vue-cli3示例位置如图:

    三、html代码编写

    定义下载事件downloadprice

    下载价格表

    四、script代码编写

    1.使用的页面中导入需要的插件:

    import Docxtemplater from 'docxtemplater';

    import { saveAs } from 'file-saver';

    import JSZip from 'jszip';

    import JSZipUtils from 'jszip-utils';

    2.定义接口数据(这里为定义好的数据,正常情况下通过接口获取需要在word文档上展示的数据):

    data() {

    return {

    // 导出价格表全部信息

    exportPriceObj: {

    actualPayFee: '179.55',

    deliveryFee: '0.00',

    discountActualFee: '179.55',

    discountFee: '9.45',

    discountRatio: '95',

    nickName: '张三',

    retailTotalFee: '0.00',

    totalFee: '189.00',

    },

    // 导出价格表商品信息

    exportPriceListOne: [

    {

    productColor: '白色',

    productName: '0909测试商品',

    productNo: 1,

    productSize: '4XL(58)',

    productSkuId: 'teydnkn',

    sellingPrice: '10.00',

    },

    {

    productColor: '白色',

    productName: '1955测试商品',

    productNo: 2,

    productSize: 'XL(52)',

    productSkuId: 'teydoja',

    sellingPrice: '40.00',

    }

    ],

    }

    }

    3.下载word文档点击事件方法:

    // 下载价格表

    downloadprice() {

    let _this = this;

    // 判断有无附加商品来选择word模版

    // 读取并获得模板文件的二进制内容

    JSZipUtils.getBinaryContent('pricenew.docx', function(error, content) {

    console.log('-----', content);

    // input.docx是模板。我们在导出的时候,会根据此模板来导出对应的数据

    // 抛出异常

    if (error) {

    throw error;

    }

    // 创建一个JSZip实例,内容为模板的内容

    let zip = new JSZip(content);

    console.log('+++++', zip);

    // 创建并加载docxtemplater实例对象

    let doc = new Docxtemplater();

    console.log('/', doc);

    doc.loadZip(zip);

    console.log('=====', doc);

    // 设置模板变量的值

    doc.setData({

    // 导出价格表全部信息

    ..._this.exportPriceObj,

    // 导出价格表商品信息

    tableone: _this.exportPriceListOne,

    });

    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, _this.exportPriceObj.nickName + '的价格表.docx');

    });

    },

    4.点击下载后可能会出现的问题:

    一、提示Uncaught Error: Corrupted zip: missing 7124 bytes.

    错误方法如图:

    可能产生的原因是:1.模版文件word放置的位置获取不到;

    2.word文档格式出现错误;

    解决方法:1.模板文件使用vue-cli2的时候,放在static目录下。使用vue-cli3的时候,放在public目录下。

    2.文件须以docx结尾。

    正确方法如图:

    二、提示Uncaught Error: Can't find end of central directory : is this a zip file ?

    错误方法如图:

    可能产生的原因是:1.你项目里面引用了mockjs文件,它的原理是重写了XMLHttpRequest,导致你上报插件找不到对应的方法;

    解决方法:上线时把项目中引入的mock注释掉,// import '@/mock';

    原理分析:mockjs是一个模拟后台接口的JS库,它的原理是重写了XMLHttpRequest,它可以在接口没出来时非常方便的模拟数据,上线之后      不引用它即可。一般上报插件中会使用原生XMLHttpRequest,而原生XMLHttpRequest已被mockjs覆盖找不到相应的方法,所以会   出错。除了mockjs之外,zonejs、oboejs、fetchjs也有自己的的XMLHttpRequest库,请慎用。

    正确方法如图:

    五、导出结果

    导出结果如图:

    有问题欢迎留言,带上问题和代码截图,看到后第一时间回复帮忙解答,谢谢!

    标签:价格表,vue,word,zip,导出,jszip,error,bug

    来源: https://www.cnblogs.com/hejun26/p/13647927.html

    展开全文
  • 本文将介绍如何在前端纯js实现word文档导出。docxtemplaterdocxtemplater 使用 JSON 数据格式作为输入,可以处理docx 和 ppt模板。不像一些其它的工具,比如 docx.js, docx4j, python-docx 等,需要自己编写代码来...
  • Vue-纯前端导出word文档

    千次阅读 2019-12-23 10:11:26
    本文将介绍如何在前端纯js实现word文档导出。 docxtemplater docxtemplater 使用 JSON 数据格式作为输入,可以处理docx 和 ppt模板。不像一些其它的工具,比如 docx.js, docx4j, python-docx 等,需要自己编写...
  • 前端vue怎么接收并导出文件 window.location.href = "excel地址" 如果是 get 请求,那直接换成 window.open(url) 就行了 创建一个隐藏的 iframe,把 iframe 的 src 指向这个 url,就可以下载了 如果...
  • vue导出word前端实现

    千次阅读 热门讨论 2019-12-09 17:31:27
    最近项目有个需求导出word,纯前端实现,查了查资料,用docxtemplater简直不要太简单。 直接把官网例子拿过来就可以了。!!! 官网地址 首先,新建一个docx文件,把模板先写好。 注意!!如果数据结构中存在...
  • 此文章主要自己整理思路,罗列几种vue导出文件的几种方式1、后端写好的Excel,发送给前端,前端接收乱码,需要转换文本流导出文件2、vue前端导出Excel3、js遍历json数据,重写到Excel4、如果用到Excel,word,ppt...
  • mhtml-to-word导出word: 方法详情请看这里 1.安装环境 npm install mhtml-to-word 2.引入使用 import { exportWord } from mhtml-to-word 3.直接使用(浏览器环境下的使用,node环境下请点击方法一详情) 这里...
  • vue实现word或pdf文档导出的功能,我的项目是:后端返回一个文档流(下图),然后前端对文档流做处理进行下载,代码如下:import axios from 'axios';axios.get(`url`, { //url: 接口地址responseType: `arraybuffer` ...
  • vue实现word或pdf文档导出的功能,我的项目是:后端返回一个文档流(下图),然后前端对文档流做处理进行下载,代码如下: import axios from 'axios'; axios.get(`url`, { //url: 接口地址 responseType: `...
  • vue实现word,pdf文件导出

    万次阅读 2018-06-28 11:17:48
    vue实现word或pdf文档导出的功能,我的项目是:后端返回一个文档流(下图),然后前端对文档流做处理进行下载,代码如下: import axios from 'axios'; axios.get(`url`, { //url: 接口地址 responseType: `...
  • 技术的应用而生都是基于需求!崇尚技术积累经验! 如何运用开源js库来实现需求,是快速开发的目的!结合自己开发功能的经历来说!使用插件能更好的的解决解决交互的平滑顺畅...FileSaver是前端人员常用的一个下载导出js
  • 通常对于excel、word文件导出前端使用的是form提交数据的方式,使用的是post,还有一种方式就是url拼接参数,使用的是get方法。 get导出方式 前台使用过ajax的get方式传值,需要注意的是:该方式是将后台的...
  • vue 敏感词过滤 前端

    千次阅读 2020-10-29 14:49:39
    根据正则来进行过滤 敏感词是一个数组 词比较多 专门存放在js文件里面 vue用 export 导出 再引入到需要用的组件里 judgeBadWord(obj) { let word = words.words //获取敏感词的数组 //进行遍历 for (let i=0;i<...
  • 不同的项目有不同的导出需求,有些只导出当前所显示结果页面的表格进入excel,这个时候就有很多插件,比如vue-json-excel或者是Blob.js+Export2Excel.js来实现导出Excel功能。但是有些需求因为数据量太大,成千上万...
  • 前端VUE页面上的导出或者下载功能,一般是调用后端的一个接口,由接口生成excel,word这些文件的流信息,返回给vue,然后由vue去构建下载的动作,这边整理了一下,封装了一下,方便以后复用。 封装一个download文件 ...
  • 前端VUE页面上的导出或者下载功能,一般是调用后端的一个接口,由接口生成excel,word这些文件的流信息,返回给vue,然后由vue去构建下载的动作,这边整理了一下,封装了一下,方便以后复用。封装一个download文件...
  • <el-button type="primary" icon="el-...Word形式导出内容</el-button> downloadWord(){ // 读取并获得模板文件的二进制内容 JSZipUtils.getBinaryContent("../../static/file/ykxzslScsqb.docx", function
  • 前端VUE页面上的导出或者下载功能,一般是调用后端的一个接口,由接口生成excel,word这些文件的流信息,返回给vue,然后由vue去构建下载的动作,这边整理了一下,封装了一下,方便以后复用。封装一个download文件...
  • 1.后台restful api,组装文件输出流对象到response响应包输出到前端(vue+webpack node管理)。 后台接口:根据projectId查询相关数据,并将相关字段封装到word模板中,最后用流输出文件。控制层代码@RequestMapping(&...
  • vue项目中使用jszip-utils+docxtemplater+pizzip+file-saver来写前端word导出功能,开发过程中可能会出现‘Can't find end of central directory : is this a zip file ?’报错。那么你要知道该报错是怎样被引起的...
  • 项目需求是甲方需要导出一个word格式的文件,之前我司用的都是ireport,java后台,怎么说呢,比较繁琐,不是很方便。这一次,由于内容很少,就想完全由前端来生成word。在网上找了很多资料,很多回答说使用的是...
  • 9.集成简易报表工具,图像报表和数据导出非常方便,可极其方便的生成图形报表、pdf、excel、word等报表; 10.采用前后分离技术,页面UI风格精美,针对常用组件做了封装:时间、行表格控件、截取显示控件、报表组件,...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

vue前端导出word文件

vue 订阅