精华内容
下载资源
问答
  • 如何把一个word文档里的格式、样式用于另一个文档? 引文地址

    如何把一个word文档里的格式、样式用于另一个文档?


    展开全文
  • 如何导出word文档

    2020-03-26 15:02:38
    有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...

    前言

    一般导出word,是后台做的功能,如果确实需要前端做,可以借助jQuery的wordexport.js导出word文档


    提示:以下是本篇文章正文内容,下面案例可供参考

    一、使用步骤

    1.引入文件

    代码如下(示例):

    import '../../services/filesaver'
    import '../../services/jquery-3.3.1.min'
    import '../../services/jquery.wordexport'
    

    2.代码演示

    代码如下(示例):

       <!-- 导出模板 -->
        <div class="new-box" style="display: none" id="export_content">
          <div class="container" v-for="(item,index) in exportContent">
            <div class="img">
              <!--<img data-height="100" data-width="125" v-if="imgUrl" :src="'data:image/png;base64,'+ imgUrl"/>-->
            </div>
            <p class="time">新闻类型: {{item.name}} / {{item.secondType}} </p>
            <h3 class="title">{{item.title}}</h3>
            <p class="time"> {{item.publishTime}} <span>{{item.auth}}</span></p>
            <div class="contxt" v-html="item.picPath"></div>
            <br>
          </div>
        </div>
    
    $("#export_content").wordExport();
    

    该处的 export_content 元素,就是div的id


    总结

    综上就是简单的导出word文档

    展开全文
  • vue导出Word(包含echart)纯小白一步步填坑去学vue导出Word导入安装包创建模板echart图片处理功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你...

    纯小白一步步填坑去学vue怎么导出Word

    因为公司做的是阅卷系统,最近要开发一个新功能,老板说的是可以导出一本像书似的可打印的PDF,因为成绩报表里面都是学生成绩的分析图也就是echarts还有各种表格,无法确定其长度,多以导出PDF最终到了成功导出但我的echarts都被拦腰切断这步不了了之,实在是做不出来,最后考虑到老师下载后还要编辑,采取了导出Word的形式,不多废话,一步步开始。

    导入安装包

    第一步当然是下载导入包啦,需要下载如下的几个安装包:

    	// 下载
    	npm install docxtemplater pizzip  --save
    	npm install jszip-utils --save 
    	npm install jszip --save
    	npm install file-saver --save
    	//在需要导出Word的vue文件导入
    	import JSZipUtils from 'jszip-utils'import docxtemplater from 'docxtemplater'import { saveAs } from 'file-saver'import PizZip from 'pizzip'

    创建模板

    在本地创建一个docx也就是Word文档,放入我们的项目中,我用的是脚手架2,所以放在static下,百度说用3的话需要放在public下,然后我们编写需要的Word底层的模板。其实语法在docxtemplater 官网写的非常的清楚还明白(其实我第一次去官网看,都不知道去哪儿看语法规则,害)这里是官网的地址可以参考(https://docxtemplater.readthedocs.io/en/latest/)去例子那里看就非常清楚。下面我简单介绍几个常用的注意的:
    Word截图
    vue-data截图

    这张图是我简单写的一个例子,因为命名过多,我就胡乱用拼音代替了,哈哈
    要想成功输出数据,需要有数组包裹 {#字段名}开始 {/字段名}结束,但凡数据是存在数组中的 就必须用数组名称给包裹起来,否则就会输出undefined,图片的话我用的是base64格式,输出需要用{%字段名}这样写{%%字段名}这样是使图片居中。因为我的数据中存在大量的echarts图表,图片的问题稍后说,回到文本内容上,要是有表格输出的话,我们需要在Word中自己建立表格,然后拿出数据去渲染。大家可以对比我的Word还有我的data数据就能明白。

    echart图片处理

    echart
    因为我的报表中几乎都是echarts,所以输出到Word中是以图片形式的,我们先用echarts自带的功能getDataURL()会直接得到base64的图片格式,这是代码:

    var that = this;
    var img = new Image();
    img.src = myline.getDataURL({
        pixelRatio: 2,// 导出的图片分辨率比例,默认为 1。
        backgroundColor: '#fff'// 导出的图片背景色,默认使用 option 里的 backgroundColor
    });
    that.wordData.fenduanList.fdUrl= img.src;
    //wordData是包裹全部要输出的在Word文档中的最外层的数组名称
    

    给图片赋值的时候一定要记住是=img.src,这里我最开始做的时候以为=img就OK了 但怎么也导不出来 最后才想通要的是地址而不是个图片。
    除了echarts自带的方法,我最开始导出PDF时还接触到一个 叫做html2Canvas的插件,这个主要是把vue前端页面转化为base64格式的图片,即所见即所得,因为我的项目存在大量的echart图表而且很多都是我循环出来的,所以用上面的办法没有找到办法循环得到base64图片,所以采用这种插件,如下是代码:

    import html2Canvas from 'html2canvas';//下载并导入包
    getCanvas(){
    	//this.$refs.ss 就是标记我图片的大框div区域
        for(let j = 0 ; j <this.$refs.ss.length;j++){
             html2Canvas(this.$refs.ss[j],{
                 allowTaint: false,//允许 canvas 污染
                 useCORS: true, //允许图片跨域
             }).then((canvas)=>{
                  this.sydArr.push(canvas.toDataURL('image/png', 1.0));
                  //这里得到的就是一个循环出来的base64图片数组
             }); 
         }
     },
    

    这里是打印出来的循环数组的样式
    在这里插入图片描述
    然后最后一步就是导出Word了

    导出Word

    上代码:

    		//这里是官网写的应该是处理图片的代码,照着写就行,没动过
           base64DataURLToArrayBuffer(dataURL) {
                const base64Regex = /^data:image\/(png|jpg|svg|svg\+xml);base64,/;
                if (!base64Regex.test(dataURL)) {
                    return false;
                }
                const stringBase64 = dataURL.replace(base64Regex, "");
                let binaryString;
                if (typeof window !== "undefined") {
                    binaryString = window.atob(stringBase64);
                } else {
                    binaryString = new Buffer(stringBase64, "base64").toString("binary");
                }
                const len = binaryString.length;
                const bytes = new Uint8Array(len);
                for (let i = 0; i < len; i++) {
                    const ascii = binaryString.charCodeAt(i);
                    bytes[i] = ascii;
                }
                return bytes.buffer;
            },
             // 导出word
            exportWord() {
            	//这里要引入处理图片的插件,下载docxtemplater后,引入的就在其中了
                var ImageModule = require('docxtemplater-image-module-free');
                var that = this;
                //这里是我的Word路径,在static文件下
                JSZipUtils.getBinaryContent("../../static/word.docx", function (error, content) {
                    if (error) {
                        throw error
                    };
                    let opts = {}
                    opts.centered = true;  
                    opts.fileType = "docx";
                    opts.getImage = (tag)=> {
                        return that.base64DataURLToArrayBuffer(tag);
                    }
                    opts.getSize = ()=>{
                        return [600, 400]//这里可更改输出的图片宽和高
                    }
                    let zip = new PizZip(content);
                    let doc = new docxtemplater();
                    doc.attachModule(new ImageModule(opts));
                    doc.loadZip(zip);
                    doc.setData({
                        ...that.wordData//我的最外层包裹一切要导出的数据名称
                    });
                    try {
                        doc.render()
                    } catch (error) {
                        var e = {
                            message: error.message,
                            name: error.name,
                            stack: error.stack,
                            properties: error.properties,
                        }
                        console.log(JSON.stringify({
                            error: e
                        }));
                        throw error;
                    }
                    var out = doc.getZip().generate({
                        type: "blob",
                        mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
                    })
                        saveAs(out, "成绩报表.docx")
                })
            },
    

    然后就没有然后了,成功导出,这是我的样例:
    导出Word
    封面,页码,页眉页脚,目录的话也可以自己直接在Word模板中填好,导出时就会自动生成了,但目录的功能虽然可实现,但不能动态的刷新成新目录,目前只能导出后用户自己更新目录,这点让我很困扰,如果有解决的办法,欢迎告知。奥,对了如果总报如下的错误,就去看看自己的Word模板上的标签名包没包住,尽量的对齐书写标签名称。
    在这里插入图片描述

    这是我的第一篇博客,很是激动,来自一个毕业一年,工作一年但觉得自己就是废物的不能说胖仙女程序猿,哈哈哈。

    展开全文
  • 有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...

    1.为什么选择freeMarker

    1.导出的word模板固定,只是数据改变
    2.快速简单

    2.freeMarker是什么

    FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。

    目前企业中:主要用Freemarker做静态页面或是页面展示

    3.怎么使用freemarker

    • 引入jar,这里用的是org.freemarker.freemarker下
    //引入freemarker
        compile group: 'org.freemarker', name: 'freemarker', version: '2.3.28'
    
    • 模板生成和创建的工具类
    package com.xxxx.xxxxx.util;
    
    import freemarker.template.Configuration;
    import freemarker.template.Template;
    import freemarker.template.TemplateException;
    import org.apache.commons.io.FileUtils;
    import org.apache.commons.io.IOUtils;
    import org.springframework.core.io.ClassPathResource;
    
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServletResponse;
    import java.io.*;
    import java.net.URLEncoder;
    import java.util.Map;
    
    /**
     * word 文档生成和下载工具类
     */
    public class WordExprotUtils {
        /**
         * 浏览器下载 word文档
         * @param dataMap  用map集合来保存,word中需要加载展示的动态数据
         * @param templateName word模板名称,例如:complainTemplate.ftl
         * @param filePath 文件生成word文件的目标路径,例如:C:\Users\WangChong\Desktop(我们的桌面路径)
         * @param fileName 文件生成word文件名称
         * @param fileSuffixName 文件生成word文件名称的后缀名
         */
        public static void downLoadWord(Map<?,?> dataMap,String templateName,String filePath,String fileName,String fileSuffixName,HttpServletResponse response){
            File file = null;
            InputStream fin = null;
            ServletOutputStream out = null;
            try {
                //生产word文件
                file = createaWord(dataMap,filePath,fileName,fileSuffixName,templateName);
                //浏览器下载方式(下载的文件名可以自定命名,这里使用上一步word文件名)
                fin = new FileInputStream(file);
                response.setCharacterEncoding("utf-8");
                response.setContentType("application/msword");
                response.setHeader("Content-Disposition", "attachment;filename=".concat(String.valueOf(URLEncoder.encode(fileName+fileSuffixName, "UTF-8"))));
                out = response.getOutputStream();
                byte[] buffer = new byte[1024];  // 读写缓冲区
                int bytesToRead = -1;
                while((bytesToRead = fin.read(buffer)) != -1) {
                    out.write(buffer, 0, bytesToRead);// 通过循环将读入的Word文件的内容输出到浏览器中
                }
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                try {
                    if(fin != null) {
                        fin.close();// 关闭文件输入流
                    }
                    if(out != null) {
                        out.close();// 关闭文件输出流
                    }
                    if(file != null) {
                        file.delete(); // 删除临时文件
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        /**
         *创建word文档
         * @param dataMap 用map集合来保存,word中需要加载展示的动态数据
         * @param filePath 生成word文件的目标路径,例如:C:\Users\WangChong\Desktop(我们的桌面路径)
         * @param fileName  生成word文件名称 例如:建议详情
         * @param fileSuffixName 生成word文件名称的后缀名 例如:.doc 或 .docx
         * @param templateName   word模板名称,例如:complainTemplate.ftl
         * @return file 返回创建的文件
         */
        private static File createaWord(Map<?, ?> dataMap,String filePath,String fileName,String fileSuffixName,String templateName) {
            Template freemarkerTemplate = null;
            File file = null;
            FileOutputStream fileOutputStream = null;
            Writer writer = null;
            File templateFile = null; //模板文件
            try {
                //1.配置类配置
                Configuration  configuration = new Configuration(Configuration.VERSION_2_3_28);//初始化配置 需要指定配置的版本
                configuration.setDefaultEncoding("utf-8");//设置默认的编码方式为utf-8
                //---------------------------------解决jar获取不到资源路径文件[开始]--------------------------------
                //解决思路:将模板放置在磁盘上读取
                // 首先获取类路径下的模板文件将其转化为输入流的方式
                // 然后在使用的计算上创建一个空的模板文件,这个文件可以是作为临时文件(即创建完使用后删除),也可以作为电脑磁盘上的永久文件。这里使用永久文件,防止频繁创建删除消耗磁盘寿命。
                // 再然后 将 上面的输入流复制到创建的模板文件。
                ClassPathResource classPathResource = new ClassPathResource("/templates/freeMarkerTemplate/"+templateName);
                InputStream inputStream = classPathResource.getInputStream();//先转输入流
                String templateDir = filePath+"/freeMarkerTemplate";//模板文件目录
                File dir = new File(filePath+"/freeMarkerTemplate");//目录不存在则创建
                if (!dir.exists()){
                    dir.mkdirs();
                }
                templateFile = new File(templateDir+File.separator+templateName);//生成模板文件
                templateFile.createNewFile();//当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
                FileUtils.copyInputStreamToFile(inputStream, templateFile);//将流复制到目标文件后并关闭流
                IOUtils.closeQuietly(inputStream);//手动关闭
                //---------------------------------解决jar获取不到资源路径文件[结束]--------------------------------
                //2.设置模板
                configuration.setDirectoryForTemplateLoading(dir);//注意这里放的是模板文件的目录,而不是具体到模板文件
                //3.获取模板
                freemarkerTemplate  = configuration.getTemplate(templateName);
                //4.生成Word文档
                file = new File(templateDir+File.separator+fileName+fileSuffixName);//生成的word文档绝对路径
                fileOutputStream = new FileOutputStream(file);
                writer = new OutputStreamWriter(fileOutputStream, "utf-8");// 这个地方不能使用FileWriter因为需要指定编码类型否则生成的Word文档会因为有无法识别的编码而无法打开
                freemarkerTemplate.process(dataMap, writer);//生成word文档
            } catch (TemplateException e) {
                e.printStackTrace();
            }catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if(fileOutputStream != null){
                        fileOutputStream.close();//关闭文件输出流
                    }
                    if(writer != null){
                        writer.close();//关闭写入流
                    }
    //                if(null != somethingFile){
    //                    somethingFile.delete();//删除模板文件,这里不删除
    //                }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
            return file;
        }
    
    
    
    
    }
    
    
    
    • 制作模板----.ftl文件
    1.打开word ,绘制好模板样式,并在要动态展示的地方输入对应的变量名称。例如:${name}
    

    在这里插入图片描述

    2.另存为‘xml文件(*.xml)’文件
    

    3.用编译器打开上一步的文件,检查变量是否都对(即和原来给的形式一样:例如${name} 符号之间没有多余的字符,如果有要将其删除)
    在这里插入图片描述
    4.重命名为以.ftl为后缀的文件。

    在这里插入图片描述

    参考文章:
    https://www.jianshu.com/p/20fd71b2e6a0

    展开全文
  • 有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...
  • Vue 引入Ueditor修改样式仿照Word文档前言Vue 引入Ueditor仿照word文档进行样式修改合理的创建标题,有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格...
  • 有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...
  • 之前的项目中使用最多的是**通过Java上传下载文件**,之后呢会有**excel文件导出导入**的功能实现,在大多数项目中,这几个功能点使用的频度想对比较高一些。 笔者前一个项目中,客户需求中有一项是:需要将相关数据...
  • 有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...
  • word模板Normal.dotm文件的生成替换

    千次阅读 2019-12-12 18:39:13
    Word样式模板的生成替换欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、...
  • hello word

    2020-09-28 10:31:08
    有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...
  • word使用小技巧

    2020-02-04 12:00:06
    word使用技巧排序欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右...
  • Hellow word

    2019-03-01 19:06:56
    有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...
  • Hello Word!

    2020-05-18 11:52:05
    有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...
  • 浅析Word2Vec

    2019-12-09 21:20:59
    有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...
  • 【分享】word技巧汇总

    2019-02-28 23:08:52
    word技巧汇总欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右...
  • 有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...
  • WORD中mathtype右编号是灰色的

    千次阅读 2020-09-19 16:32:40
    有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...
  • freemarker生成word文档后转pdf先来看看效果图进入正题功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左...
  • 有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...
  • 一个WORD的问题

    2021-03-15 22:06:35
    有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...
  • 一、序言 Excel、PDF的导出导入是我们工作中经常遇到的一个问题,刚好今天公司业务遇到了这个问题,顺便记个...因为PDF常用的软件不让支持编辑,我们就先使用WPS以Word的形式进行编辑制作出客户需求一样的样式
  • Java poi Word模板数据替换需求说明设计思路功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右...
  • 有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...
  • word批量删除除英文间空格外的空格方法一新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右...
  • JAVA使用jacob判断word附件是否加密

    千次阅读 2019-10-29 09:58:21
    有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...
  • 有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...
  • 有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...
  • 有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...
  • word2vec理解及pytorch实现

    千次阅读 2019-01-29 16:03:24
    word2vec理解及pytorch实现欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 187
精华内容 74
关键字:

word样式导入与导出