精华内容
下载资源
问答
  • 在打开word文档,特别是在同时存在word2003和word2007的环境下,打开word2007时,总是会提示正在配置进度条。
  • 1.按照客户要求来编辑“绘制”所需word文档 使用word绘制出客户需要的那种结果,让客户确认结果,然后再制作。 2.绘制完成后,另存为《Word 2003 XML 文档(*.xml)》 确认无误后,另存 3.将保存后的文件的后缀名改为...

    开发流程说明

    1.按照客户要求来编辑“绘制”所需word文档

    使用word绘制出客户需要的那种结果,让客户确认结果,然后再制作。在这里插入图片描述

    2.绘制完成后,另存为《Word 2003 XML 文档(*.xml)》

    确认无误后,另存
    在这里插入图片描述

    3.将保存后的文件的后缀名改为《.ftl》

    在这里插入图片描述

    4.使用小红本打开ftl文件,复制全部内容,然后去百度在线格式化xml文件

    打开这个ftl文件,然后复制里面的所有内容,去百度格式化一下
    在这里插入图片描述
    格式化网址: http://www.bejson.com/otherformat/xmlsort/在这里插入图片描述

    5.将格式化后的内容覆盖到.ftl 文件里面,然后把这个文件放到开发目录中

    将内容覆盖到zkz.ftl文件里面在这里插入图片描述

    6.引入freemark的jar包,web项目自己去百度下载个,maven项目直接引入

    传统的web项目引入2个jar包:

    freemarker-2.3.28.jar
    sun.misc.BASE64Decoder.jar

    maven项目这样写即可:

    <!--freemarker使用start-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-freemarker</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--freemarker使用end-->
    

    7.引入freemark工具,来生成对应的word文件

    import freemarker.template.Configuration;
    import freemarker.template.DefaultObjectWrapper;
    import freemarker.template.Template;
    import freemarker.template.TemplateExceptionHandler;
    import sun.misc.BASE64Encoder;
    
    import java.io.*;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Locale;
    import java.util.Map;
    
     
     /*******************************************
      *word文档导出
      *******************************************/
     public class FreeMarkerUtil {
     
         private static Logger log = Logger.getLogger(FreeMarkerUtil.class.toString());
         private static final String ENCODING = "UTF-8";
         private static Configuration cfg = new Configuration();
     
         //初始化cfg
         static {
             //我们要将刚刚创建成的ftl格式的文件放到这个路径下
             cfg.setClassForTemplateLoading(FreeMarkerUtil.class, "/templates/XXXXX/freemaker");
             // setEncoding这个方法一定要设置国家及其编码,不然在ftl中的中文在生成html后会变成乱码
             cfg.setEncoding(Locale.getDefault(), ENCODING);
             // 设置对象的包装器
             cfg.setObjectWrapper(new DefaultObjectWrapper());
             // 设置异常处理器,这样的话就可以${a.b.c.d}即使没有属性也不会出错
             cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
     
         }
     
         //获取模板对象
         public static Template getTemplate(String templateFileName) throws IOException {
             return cfg.getTemplate(templateFileName, ENCODING);
         }
     
         /**
          * 据数据及模板生成文件
          * @param data             Map的数据结果集
          * @param templateFileName ftl模版文件名
          * @param outFilePath      生成文件名称(可带路径)
          */
         public static File createFile(Map<String, Object> data, String templateFileName, String outFilePath) {
             Writer out = null;
             File outFile = new File(outFilePath);
             try {
                 // 获取模板,并设置编码方式,这个编码必须要与页面中的编码格式一致
                 Template template = getTemplate(templateFileName);
                 if (!outFile.getParentFile().exists()) {
                     outFile.getParentFile().mkdirs();
                 }
                 out = new OutputStreamWriter(new FileOutputStream(outFile), ENCODING);
                 // 处理模版
                 template.process(data, out);
                 out.flush();
                 log.info("由模板文件" + templateFileName + "生成" + outFilePath + "成功.");
             } catch (Exception e) {
                 log.error("由模板文件" + templateFileName + "生成" + outFilePath + "出错");
                 e.printStackTrace();
             } finally {
                 try {
                     if (out != null) {
                         out.close();
                     }
                 } catch (IOException e) {
                     log.error("关闭Write对象出错", e);
                     e.printStackTrace();
                 }
             }
             return outFile;
         }
     
         //获得图片的base64码
         public static String getImageBase(String src) throws Exception {
             if (src == null || src == "") {
                 return "";
             }
             File file = new File(src);
             if (!file.exists()) {
                 return "";
             }
             InputStream in = null;
             byte[] data = null;
             try {
                 in = new FileInputStream(file);
                 data = new byte[in.available()];
                 in.read(data);
                 in.close();
             } catch (IOException e) {
                 e.printStackTrace();
             }
             BASE64Encoder encoder = new BASE64Encoder();
             return encoder.encode(data);
         }
     
         public static void main(String[] args) {
             try {
                 Map<String, Object> data = new HashMap<String, Object>();
                 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    	         Date date=new Date();
    	         String current=sdf.format(date);
    	         data.put("dqn", current.substring(0,4));
                 createFile(data, "zhuohao.ftl", "C:/Users/Administrator/Desktop/test.doc");
             } catch (Exception e) {
                 e.printStackTrace();
             }
         }
     }
    

    8.通过工具方法将数据写入.ftl文件,然后导出到word中

    js前端携带查询表单的查询参数(与列表的数据要一致)到后台获取数据
    js代码:

    goToWord_zkz: function(){
        var self = this;
        window.location.href = baseUrl + "xxxCont/xxxxxForWord?dclx=zkzdy&pcid=" + self.queryForm.pcid
            + "&xmtab="+self.queryForm.xmtab
            +"&zytab="+self.queryForm.zytab
            + "&sftcs=" + self.queryForm.sftcs
            + "&bklb=" + self.queryForm.bklb
            + "&sfxstp="+self.queryForm.sfxstp;
        self.$Message.success({
            background: true,
            duration: 10,
            content: "如果数据较多,请耐心等待,不要重复点击"
        });
    },
    

    java代码:

    /**
     * 打印导出
     * @param dclx 导出类型:zhdy桌号打印、dzddy对照单打印、zkzdy准考证打印
     */
    @RequestMapping(value = "xxxxxForWord")
    public void xxxxxForWord(HttpServletRequest request, HttpServletResponse response, HttpSession session,Model model, ZkzwhEntity zzkzwhEnt, String dclx) throws IOException {
        Map<String, Object> data = new HashMap<String, Object>();
        data.put("currNd", DateUtil.CurrentTime("yyyy"));
    
        List<ZkzwhEntity> xslist = zkzwhService.queryXsList_word(zzkzwhEnt);//new PageInfo<BkshPage>(zkzwhService.queryXsList(bkshPage));
        data.put("xslist", xslist);
    
        // 先下载到服务器
        String outPath = File.separator + "upload" + File.separator + "freeMaker" + File.separator + "temp";
        File fl1 = new File(context.getRealPath(outPath));
        fl1.mkdirs();
        File fl2 = new File(context.getRealPath(outPath), user.getUsername()+dclx+".doc");// 下载到服务器的文件名称
        if(!fl2.exists()) {
            fl2.createNewFile();
        }
    
        String ftlName = "";//模板文件的全称
        String docName = "";//导出文件的名字
        FreeMarkerUtil fmu = new FreeMarkerUtil();
        if("zhdy".equals(dclx)){//桌号打印
            ftlName = "zhuohao.ftl";
            docName = "年单招桌贴";
        }else if("dzddy".equals(dclx)){//对照单打印
            ftlName = "duizhaodan.ftl";
            docName = "年单招对照单";
        }else if("zkzdy".equals(dclx)){//准考证打印
            ftlName = "zhunkaozheng.ftl";
            docName = "年单招准考证";
        }
        fmu.createFile(data, ftlName, context.getRealPath(outPath) + File.separator + user.getUsername()+dclx + ".doc");
    
        // 读取文件
        if(fl2.exists()) {
            InputStream ins = new FileInputStream(fl2);
            BufferedInputStream bins = new BufferedInputStream(ins);// 放到缓冲流里面
            OutputStream outs = response.getOutputStream();// 获取文件输出IO流
            BufferedOutputStream bouts = new BufferedOutputStream(outs);
            response.setContentType("application/x-download");// 设置response内容的类型
            response.setHeader("Content-disposition" , "attachment;filename=" + new String((DateUtil.CurrentTime("yyyy")+ docName + ".doc").getBytes("GB2312"), "ISO-8859-1"));// 设置头部信息
            int bytesRead = 0;
            byte[] buffer = new byte[8192];
            // 开始向网络传输文件流
            while ((bytesRead = bins.read(buffer, 0, 8192)) != -1) {
                bouts.write(buffer, 0, bytesRead);
            }
            bouts.flush();// 这里一定要调用flush()方法
            ins.close();
            bins.close();
            outs.close();
            bouts.close();
        } else {
            response.sendRedirect("下载失败");
        }
    }
    

    9.遇到的问题,图片不展示

    开发过程中,一直都很顺利很快乐,但是最后的最后,还是遇到了问题,就是模板循环出来后,图片没有打印出来。
    在这里插入图片描述
    图片上的保存信息,意思就是图片资源没有找到。
    百度了下,百度到如下信息,即id重复的问题,于是根据百度到的内容,我做出了修改:

    <w:binData w:name="wordml://src_${xsObj.sfzh}.png" xml:space="preserve">${xsObj.zp_str!}</w:binData>
    <v:shape id="图片_${xsObj_index-1}" o:spid="_x0000_s1026${xsObj_sfzh}" type="#_x0000_t75${xsObj.sfzh}">
        <v:imagedata src="wordml://src_${xsObj.sfzh}.png" o:title=""/>
    </v:shape>
    

    注意:
    1,${xsObj.zp_str!} 传递的是我从后台取出来的base格式的图片内容。
    2,<w:binData><\binData> 标签之间不能有其他任何字符,类似于textarea标签的性质一样。
    3,word中存在多张 不同 的图片,那么在遍历图片时,id和name必须不同才可以,使用循环的下标来标记或者数据库中的id来标记,像我的文章中,我使用了身份证号作为id,就可以不重复。

    我以为这就大功告成了,但是实际上,还是不行,我以为是我哪里写错了,我仔细检查了好几遍,确定代码没有写错,于是开始找数据的问题。
    结果却是发现是数据来源的问题。
    word转成的xml再转成ftl格式的数据后,它不支持前缀为 “data:image/jpg;base64,”,就是因为我的bas格式的图片中,我在存储时,故意拼接了这个字符,为了方便页面中 <img src="">直接显示图片。但是在这里就必须没有这个 “data:image/jpg;base64,” 开头才可以。
    因为别的地方还用到这个base格式的图像,所以不方便修改保存方法,于是在数据库中查询的时候截取了一下字符串即可:
    在这里插入图片描述
    在这里插入图片描述
    完美!真香。

    展开全文
  • 1、首先在电脑中打开word文档,可以发现“功能区”被自动隐藏了,如下图所示。 2、这时需要点击左上角的开始选项卡,如下图所示。 3、然后在打开的开始菜单中,A下方的横杠,选择单击取消勾选“折叠功能区”。...

    1、首先在电脑中打开word文档,可以发现“功能区”被自动隐藏了,如下图所示。

    2、这时需要点击左上角的开始选项卡,如下图所示。

    3、然后在打开的开始菜单中,A下方的横杠,选择单击取消勾选“折叠功能区”。

    4、这样“功能区”就显示出来了,如下图所示就完成了。

    展开全文
  • 现需要将odt转为word文件。 现状:通过java转化为rtf没问题,转为word时,merged cells错位,变成合并之前的状况了。直接在swriter中“另存为”word则也没问题问题:如何通过Java程序将它转为正常显示的word。...
    已知:一odt文件中有一table,该table有merged cells。现需要将odt转为word文件。
    
    现状:通过java转化为rtf没问题,转为word时,merged cells错位,变成合并之前的状况了。直接在swriter中“另存为”word则也没问题。
    问题:如何通过Java程序将它转为正常显示的word。尝尽各种办法,一直未解决。
    使用方法:
    一、storable.storeAsURL(outputUrl, propertyValues)保存为word;
    二、通过
    xDispatchHelper.executeDispatch(dispatchProvider, ".uno:SaveAs", "", 0, propertyValues )另存。
    展开全文
  • 问题描述:每次打开word总是显示为修订状态,文字界面凌凌乱乱。 解决办法:  点击“审阅”菜单中,找到“接受”栏,点击下方的小箭头,出现下拉菜单,点击“接受对所有文档的修订”,再保存文档。 重新打开 ...

    问题描述:每次打开word总是显示为修订状态,文字界面凌凌乱乱。

    解决办法:

           点击“审阅”菜单中,找到“接受”栏,点击下方的小箭头,出现下拉菜单,点击“接受对所有文档的修订”,再保存文档。
    重新打开 文档后就不会再显示修订装订了。

    展开全文
  • Word2013文档解决出现乱码的问题

    千次阅读 2017-11-16 09:58:41
    我们在网上下载下来的很多文档都会出现一些...1、如图,这个文档在显示页码的时候就出现了所谓的乱码,我们现在需要先单击“文件”按钮,然后在弹出的菜单中选择“选项”。 3、此时会打开一个“Word 选项
  • office2007 word 图片无法显示问题

    千次阅读 2010-07-12 13:00:00
    office2007 word 图片一直无法正确显示,就只显示一个大框框~~恩,不容易呀,这个困扰了我大半年的问题今天终于被我解决了。方案如下:点击左上角的office 2007特有的button:,进入Word选项,高级,第三栏,显示文档...
  • 今天在mathtype敲完公式后,复制进Word,却发现只显示:{EMBED Equation.DSMT4},右击黏贴成图片格式又能显示完整公式,但是无法编辑,闹心了一个多小时,卸载了mathtype6,重装了mathtype7还是没有,差点就激动地...
  • office2007 word 图片一直无法正确显示,就只显示一个大框框~~ 恩,不容易呀,这个困扰了我大半年的问题今天终于被我解决了。 方案如下: 点击左上角的office 2007特有的button:, 进入Word选项, 高级, 第...
  • 相信很多人都碰到过这个问题,我当时认为是office损坏问题,卸了重装,结果问题还在。官方给出的解决方法就是重装office,呵呵!!!后来意外发现了这个解决方案。 打开任务管理器,关闭其中的spoolsv.exe进程...
  • 解决java中html转word文档,转成功后的word文档在断网情况下无法显示图片问题
  • Word中嵌入Visio对象无法显示问题

    千次阅读 2010-12-28 16:31:31
    Word中嵌入Visio对象无法显示问题 - [软件技术 ] 版权声明 :转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://bufferpool.blogbus.com/logs/46727253.html  环境:Windows XP,Word ...
  • 最近在打开Word文档时总是出现“向程序发送命令时出现问题”对话框(如下图所示),而且不确定性,关闭重新打开有时没事了有时还不行,最后通过在网上看到解决之道,解决方法如下:    方法一:  1、  直接点...
  • freemarker生成word显示图片

    千次阅读 2019-10-29 11:49:28
    我在生成word的时候文字显示没问题,但是图片一直显示不出来。 标题图片显示失败 后来进过比对刚生成的xml文件和我格式化后的xml文件发现刚生成的xml文件的base64码是左对齐的而我的已经格式化了如图: 格式化后...
  • 一般来说,下载完NoteExpress后,打开word就能够直接出现NoteExpress插件了,如下 之前我的都是能用的,但是有一天在我写论文需要导入参考文献的时候,却意外发现,它它它不见了!!! 去网上检索,无非就是这两种...
  • 我的word中的图片只显示一个方框,这个问题困扰我有一段时间了,今天终于搞定。 原因如下: Word中不能显示公式 问:在Word 2003中编辑好的公式无法显示,只显示为一个方框,该怎么办? 答:Word把使用公式编辑...
  • word引用的图片显示为一窜代码,或者是链接,选中代码--右键--显示域值 后可正常显示图片,但是无法保存。word选项--高级--显示文档内容--去掉“显示域代码而非域值”的选中状态。 转载于:...
  • 我的是office2016,以前用过Math Type,然而word卸掉Math Type后遇到了PowerPoint一直跳出无法加载Math Type问题。 首先尝试了重装office2016,并没有用处。接着百度了方法如下: 1、在卸载了MathType后仍然在...
  • 本人在Word模板导出时存在的问题主要有两个方面(我使用的是办公软件是WPS):1.在本机可以正常导出,IIS发布后导出失败!报错信息是:检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时...
  • word出现无法加载加载项Please restart Word to load Mathtype addin properly或wps无法加载此加载项程序 因为电脑安装了mathtype,所以加载项里面多了一个这个软件,但是可能跟pj有关,总是出问题,比如word加载不...
  • 窝在家写论文,自己的笔记本没有安装MathType6.9b,之前在实验室电脑上很容易就安装好了,没有出现错误,然而。。。 先说一下安装的过程: 附上MathType6.9b 网pan链接: ...
  • win10打开Word文件提示“转换文件”,选择文件类型,这个在编程操作Word的时候可能会碰到一些文件,这些文件通常是由一些转换工具,比如pdf转换成word后生成的,Word在这个地方提出个文件转换的建议,因此也可以设置...
  • 在2013中endnote往往会出很多bug,写论文最后加引用时很让人崩溃。一般情况是会显示{作者,年份,序号}这种格式,而且不会在最后添加引文信息。这种情况一般 update 一下style就好了。但 x7.0 版本会出现......
  • 解决word2016复制粘贴后一直未响应

    万次阅读 2020-05-13 10:13:51
    但是出现很麻烦的问题,从一个文档复制粘贴一个公式到另一个文档都会在最上面出现白色的未响应提示,而且一直这样卡死,直到强制关闭word2016文档,开始的时候是怀疑word2016安装文件出了问题,重装一遍还是如此,...
  • 将office安装目录中startup文件夹(C:\Program Files\Microsoft Office\Office12\STARTUP)里的东西删掉,就可以了 转载于:https://www.cnblogs.com/zhou-love-coding/p/5950809.html...
  • 终于解决了今天打开word发现用mathtype键入的公式都显示为一个方框,于是百度,各种解释说什么字体库、段落距离等等问题。(以前一直在设置什么MT E..字体,一直没有解决)可是想不太靠谱,段落这种以前碰到过,于是...
  • java准确读取word文件页数

    万次阅读 热门讨论 2017-05-06 20:48:37
    由于本人在做一个网上打印网站,遇到了一个需求是“准确读取word文件页数,从而实现计费功能”,通过很长时间的学习、查资料后,终于解决了这个问题,因此把方法写出来,方便有同样需求的人少走弯路。 (本方法已在...
  • word文档转换成swf格式文件在网页中用flash显示在OA系统中我们常常需要将上传的word文档在网页中阅览,一般上传后的文档用html的形式查看是会...介绍在ASP.NET中如何将上传的word文档转换为swf格式的文件显示在网页中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,747
精华内容 22,298
关键字:

一直显示word出现问题