精华内容
下载资源
问答
  • 常用Word文档模板大全

    2009-04-27 10:16:48
    * 个人简历I.doc * 个人简历II.doc * 个人简历III.doc * 产品宣传单.doc * 产权转移协议书.DOC * 人事资料表.doc * 介绍信.DOC * 介绍信.dot * 从业人员职务说明书.doc * 休息标志.doc …… ……
  • 直接使用代码编写word文档,用代码生成word,但是设置样式,格式,图片非常麻烦,不建议使用。如果客户或产品提供一份word的样式,我们也难以完全复原,调样式很头疼的。 读取原有word模板,替换相关变量。个人感觉...

    写在前边的话

    使用phpword生成文档有两种方式

    • 直接使用代码编写word文档,用代码生成word,但是设置样式,格式,图片非常麻烦,不建议使用。如果客户或产品提供一份word的样式,我们也难以完全复原,调样式很头疼的。
    • 读取原有word模板,替换相关变量。个人感觉这种方式能满足绝大部分需求,实现起来也比较简单,所有的样式,格式直接在word模板里设置好,替换变量就可以了,还可以很方便的切换模板。本文主要介绍这种方式,毕竟我们是为了快速实现客户的需求,让客户提供一份word模板,我们稍微一改就可以了。

    开始干活

    1,通过composer安装phpword包

    composer require phpoffice/phpword

    2,准备一个word模板(让客户或产品提供吧,docx格式的)

    先来一个简单的

     

    1.png

    这是一个word文档,我们首先要替换的是姓名,电话。现在把这两个值用变量代替,模板里面的变量样式为 ${name} ,如下:

    2.png

     

    好了,一个简单的模板可以了,就类似于html静态页面

    3,开始替换变量(渲染模板)

     

    include_once "vendor/autoload.php";
    $tmp=new \PhpOffice\PhpWord\TemplateProcessor('tmp.docx');//打开模板
    $tmp->setValue('name','李四');//替换变量name
    $tmp->setValue('mobile','18888888888');//替换变量mobile
    $tmp->saveAs('简历.docx');//另存为
    

    打开 简历.docx 可以看到变量已经被替换了

    3.png

     

    OK,流程就是这样,是不是突然觉得导出word很简单?


    下面开始一些进阶的功能
    如果遇到表格样式的,但又不确定是多少行,如下,教育经历的行数是不确定的

     

    4.png

     

    这需要用的克隆行,模板修改如下

     

    5.png

    这里要记住的是表格左上角的变量school,这个变量用来控制你要复制的是哪一行,复制以后会生成类似于school#1,year#1,school#2,year#2,school#3,year#3 这样的变量
    渲染模板

     

    //2复制行
    $arr=[
        ['school'=>'大学','year'=>'2014'],
        ['school'=>'大学','year'=>'2014'],
        ['school'=>'大学','year'=>'2014'],
        ['school'=>'大学','year'=>'2014'],
        ['school'=>'大学','year'=>'2014'],
        ['school'=>'大学','year'=>'2014'],
        ['school'=>'大学','year'=>'2014'],
    ];
    $rows=count($arr);//总行数
    $tmp->cloneRow('school',$rows);//复制行
    for($i=0;$i<$rows;$i++){
        $tmp->setValue("school#".($i+1),$arr[$i]['school']);//替换变量
        $tmp->setValue("year#".($i+1),$arr[$i]['year']);
    }
    

    结果:

     

    5.png


    上面是行clone,有时候我们可能要用到块clone,如下面这种情况,如果有获奖记录,我希望显示这一块,如果没有,就整个不显示

     

    6.png

     

    这时我们就要加一个块标签了,与html标签格式类似,成对出现,如下图

     

    7.png


    下面来渲染,当winning有值是显示win_block模块,并渲染winning_record,没有值是不显示win_block模块

    $winning_record="";
    if($winning_record != ''){
        $tmp->cloneBlock('WIN_BLOCK',1);
        $tmp->setValue('winning_record',$winning_record);
    }else{
        #$tmp->deleteBlock('WIN_BLOCK');//这个方法会出错,原因不知,用cloneBlock来代替
        $tmp->cloneBlock('WIN_BLOCK',0);
    }
    

    结果就不展示了,自己测试一下就可以了,这里的deleteBlock方法不能用,原因我也不知道,我就用cloneBlock复制0行来代替了


    替换图片

    img1.png

    直接把图片换成变量

     

    2.png

    渲染

     

    $tmp->setImageValue('header',['path'=>'1.jpeg']);
    

    设置图片宽高

     

    $tmp->setImageValue('header', ['path' => '1.jpg','width'=>500,'height'=>500]);
    

    设置多次替换

     

    $tmp->setImageValue('header', ['path' => '1.jpg','width'=>500,'height'=>500],3);
    

    一些常用的word符号

    换行符 <w:br/>
    分页符 <w:br w:type="page"/>
    制表符 <w:tab/>
    html预留字符要替换为实体字符,如&要替换为&amp;,可以使用htmlspecialchars()
    使用方式
    比如我们数据库存的换行符一般是 \n\r 这个在word中是无效的,要替换为 <w:br/> 才行

     

    $content = str_replace("\r\n", '<w:br />', $content);
    $tem->setValue('content', $content); //内容
    

    本文PHP测试代码gitee
    如果有问题,可以留言一起研究学习



    作者:小牛_6666
    链接:https://www.jianshu.com/p/caba04b57258
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    展开全文
  • 利用freemarker导出我们想要的数据格式(此时以word文档为例) freemarker百度百科 FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用...

    利用freemarker导出我们想要的数据格式(此时以word文档为例)

    freemarker百度百科

    FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

    准备工作

    1.1基本介绍
    freemarker是一个非常强大的转化的插件,我们可以用来做很多的事情,比如生成excel表格,word等,每次使用都有其独特的模块等,所以我们做事情的时候就要想好自己想要的做成的格式,这样我们就能够很快的达到我们的目的,本文主将的是生成word文档的相关的说明

    1.2导入相应的jar包或者是坐标

    <!--引入freemaker-->
        <dependency>
          <groupId>org.freemarker</groupId>
          <artifactId>freemarker</artifactId>
          <version>2.3.22</version>
        </dependency>
    

    1.3建立相关的模板arc.doc文件
    在这里插入图片描述
    1.4将文件转化为xml格式,然后导入到相关的项目中,在项目中再转化为ftl格式,因为平时的文档不会转化为这种格式,所以在idea的环境中我们可以转化为这种格式
    在这里插入图片描述

    实现流程

    2.1.通过工具类来将map中的输入到模块中去

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    2.2.相关的工具类的源码

    package cn.ujiuye.utils;
    
    import freemarker.template.Configuration;
    import freemarker.template.Template;
    import freemarker.template.TemplateException;
    
    import java.io.*;
    import java.util.Map;
    
    /**
     * 传建文件对象的工具类
     */
    public class MDoc {
    
    	//读取加载ftl文件
    	private Configuration configuration = null;
    
    	public MDoc() {
    		configuration = new Configuration();
    		configuration.setDefaultEncoding("utf-8");
    	}
    
    	/*
    	 * 参数一dataMap:将要在doc上显示的数据保存在map里
    	 * 参数二fileName:指定生成文件的绝对路径
    	 */
    	public void createDoc(Map<String,Object> dataMap,String fileName) throws UnsupportedEncodingException {
    		//获取模板文件所在的包路径
    		configuration.setClassForTemplateLoading(this.getClass(), "/cn/ujiuye/template");
    		Template t=null;
    		try {
    			//从模板文件所在的包路径中获取指定的模板
    			t = configuration.getTemplate("myarc.ftl");
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		File outFile = new File(fileName);
    		Writer out = null;
    		FileOutputStream fos=null;
    		try {
    			fos = new FileOutputStream(outFile);
    			//字符流转化为字节流
    			OutputStreamWriter oWriter = new OutputStreamWriter(fos,"UTF-8");
    			//为字符输出流添加缓存的功能
    			out = new BufferedWriter(oWriter);
    		} catch (FileNotFoundException e1) {
    			e1.printStackTrace();
    		}
    		try {
    			//dataMap:将要在doc上显示的数据保存在map里;out:文件流
    			t.process(dataMap, out);
    			out.close();
    			fos.close();
    		} catch (TemplateException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    }
    
    

    2.3.下载附件,以我们想要的格式来下载

     //下载附件,当点击的下载的时候以附件的形式开始下载 即下载当前登录用户的档案
        @RequestMapping("/downarc")
        public ResponseEntity<byte[]> downarc(HttpSession session) throws Exception{
            Employee emp = (Employee) session.getAttribute("emp");
            Employee emparc = us.getArc(emp.getEid());
            //往map集合中存入相关的数据
            Map map = new HashMap();
            map.put("ename",emparc.getEname());
            map.put("esex",emparc.getEsex());
            map.put("bir",new SimpleDateFormat("yyyy-MM-dd").format(emparc.getArc().getBirthday()));
            map.put("mz",emparc.getArc().getMinzu());
            MDoc mDoc = new MDoc();
            mDoc.createDoc(map,"D:\\oa\\files\\arc\\emparc.doc");
    
            File file = new File("D:\\oa\\files\\arc\\emparc.doc");
            HttpHeaders hh=new HttpHeaders();
            hh.setContentDispositionFormData("attachment",new String("emparc.doc".getBytes("gbk"),"iso-8859-1"));
            hh.setContentType(MediaType.APPLICATION_OCTET_STREAM);
            return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),hh, HttpStatus.OK);
        }
    
    

    运行结果
    在这里插入图片描述

    展开全文
  • 本书尽管从录入、选定、复制等看似简单的操作入手,但介绍的却是大多数人不熟知的技巧,进而深入到表格和图形编排、文档格式、文档内容保护与输出、自定义模板等内容,真正体现了Word满足个性需求的本色。...
  • 商业计划书模板.doc

    2020-07-13 17:06:42
    商业计划书word模板,以及把商业计划书的核心目录章节列了出来,并且在大多数章节中增加了内容描述,说明章节内容重点描述对象,拿到后可以直接在此基础上编辑自己的文档。包括概要、公司介绍产品和服务、行业和...
  • 本书尽管从录入、选定、复制等看似简单的操作入手,但介绍的却是大多数人不熟知的技巧,进而深入到表格和图形编排、文档格式、文档内容保护与输出、自定义模板等内容,真正体现了Word满足个性需求的本色。...
  • ├<微信营销策划集【39套文档PPT以及Word】> │ ├《城市画报》微信营销移动营销最新案例.docx │ ├20130506_松原_恒大御景湾_《微信公众平台》分享总结.ppt │ ├传驰(ccpower)微信营销新模式.ppt │ ├大粤网与...
  • 具有强大插件平台支持,免费提供海量在线存储空间及文档模板,支持阅读和输出PDF文件,全面兼容微软Office97-2010格式。WPS的三大产品线:办公软件,金山演示和金山表格软件的LOGO分别是W、P、S,他们重新构成了金山...
  • 点聚weboffice 6.0

    2018-04-25 13:57:23
    Weboffice是一款由北京点聚信息技术有限公司提供的完全免费(商业用途也免费)且功能强大的在线word/excel/wps编辑辅助控件, WebOffice功能介绍: 1.在线编辑Word、Excel、ppt、Wps... ... 2.全面支持MS Office的...
  • site2U网站管理系统

    2007-05-18 18:01:11
    新闻、产品文档、下载、编辑、用户、论坛……,借助通用模板技术和独创的infoInsert技术,这些不同形式的信息都在同一套系统里完成建立、更新和维护。 1.高级频道管理模式的引入 - 频道与模板样式的结合...
  • 实例082 将一个Word文档分割为多个小的Word文档 实例083 将多个Word文档合并为一个Word文档 实例084 批量替换Word文档中指定的字符串 3.2 读取外部数据到Word中 196 实例085 读取文本文件到Word中 实例086 ...
  • 实例082 将一个Word文档分割为多个小的Word文档 实例083 将多个Word文档合并为一个Word文档 实例084 批量替换Word文档中指定的字符串 3.2 读取外部数据到Word中 196 实例085 读取文本文件到Word中 实例086 ...
  • 如果你使用过Visio、Word和截图工具来创建规格文档,就会知道这种传统方式有多烦琐。首先在Visio线框图上添加脚注编号,然后对线框图进行截图、保存并导进Word,最后在Word里编写相关注释。一旦对线框图进行修改,...
  • 企业网站中英文

    2012-11-30 20:30:17
    1.首页模板新增了产品图片的FLASH翻页效果; 2.新加了二个全新的模板; 3.增强了前台和后台的营销网络功能; 4.根据客户的反馈,产品的排列由每行一个改成了每行三个,排列方式更加美观; 5.前台界面增加了目前非常流行...
  • 同时,系统提供多种演示模板供您制作演示文档时选用。演示文档可以逐页播放或是自动播放,还有多种页面切换方式供您选择,如“展开”、“卷入”、“溶解”等。单个对象也可专门设置演示方式。在解说时您可以用鼠标...
  • 系统可设置模板文件,利用记录中的数据即可轻松生成表单文档,与纸面作业无缝衔接。 (14)可扩展性强:以信息管理平台为基础,数据表、统计报表、角色权限、业务流程等都可自定义,可根据需要随时扩展调整,用途...
  • 为感谢广大用户一直以来对我们产品的关注和支持,让每个用户更直白明了的体验新版本,下面简要介绍下新版本V9.5较之旧版本的一些重大改进。 亮点一 首先,整个后台登陆界面重新设计美化,随机更换不同界面背景——...
  • ✅ RabiAPI:一个开箱即用的Java接口文档生成工具 - 更多介绍 2020年7月27号添加 Lenix(北京) - Github, 博客 ✅ PHP中文站:最专业的PHP资源网站:PHP教程, PHP中文手册, PHP开发工具, PHP框架文档大全!- ...
  • 项目介绍: Java Low Code Platform for Enterprise web applications JeecgBoot 是一款基于代码生成器的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shiro,JWT,...
  • 项目介绍: Java Low Code Platform for Enterprise web applications JeecgBoot 是一款基于代码生成器的低代码开发平台,零代码开发!采用前后端分离架构:SpringBoot2.x,Ant Design&Vue,Mybatis-plus,...
  • 管理员管理网站中,增设稿件多级审核功能,即为为管理员分配不同角色(发稿员、初审员、终身员),而文档只有通过终身才能在前台演示。   亮点三 首先,商城系统后台管理列表重新优化,增加显示商品小图、大图和...
  • 管理员管理网站中,增设稿件多级审核功能,即为为管理员分配不同角色(发稿员、初审员、终身员),而文档只有通过终身才能在前台演示。   亮点三 首先,商城系统后台管理列表重新优化,增加显示商品小图、大图和...
  • DOT:Microsoft Word文档模板 DPL:Borland Delph 3压缩库 DRV:驱动程序 DRW:Micrografx Designer/Draw;Pro/E绘画文件 DSF:Micrografx Designer VFX文件 DSG:DOOM保存的文件 DSM:Dynamic Studio音乐模块...
  • 第3篇为协同工作篇,介绍如何实现Excel与Access、Word、文本格式的数据以及网站数据的共享。 目录: chapter 01 快速输入与编辑数据 1.1 文字的输入 1.1.1 在编辑栏中输入 1.1.2 在单元格中输入 1.1.3 文字的...
  • ■前后端全面引入scss(sass)技术,与Bootstrap官方保持一致(作为国内首家引入Bootstrap的CMS厂商,一直推动基产品的国内实施和普及教育)。 ■Markdown编辑器,可访问https://www.73ic.com/Plugins/markdown/ 体验...
  • 可设置Excel或Word打印模板,只需Click一下,数据即可填入模板中的指定位置,生成派工单、销售合同、审批表等文档,与纸面作业无缝衔接。 具有到期提醒功能,可设置提醒时机、收信人、提醒内容、提醒频度,系统会...
  • ■前后端全面引入scss(sass)技术,与Bootstrap官方保持一致(作为国内首家引入Bootstrap的CMS厂商,一直推动基产品的国内实施和普及教育)。 ■Markdown编辑器,可访问https://www.73ic.com/Plugins/markdown/ 体验...
  • php网络开发完全手册

    热门讨论 2009-03-02 13:17:26
    1.2.2 PHP擅长的几个领域及产品介绍 5 1.2.3 PHP不适合做什么 6 1.2.4 其他案例 6 1.3 PHP的Hello, world预览 6 1.3.1 第一个PHP程序Hello, world 6 1.3.2 学习PHP应该准备哪些软件 8 1.3.3 相关知识领域的介绍 9 ...
  • Word文档查询 Wps文档查询 5、辅助查询: 单位核算:单位总账、单位明细账、单位汇总表、科目汇总表、单位多栏账、往来业务核销、单位未达账、账龄分析表 部门核算:部门总账、部门明细账、部门汇总表、科目汇总...
  • asp.net知识库

    2015-06-18 08:45:45
    Asp.Net(C#)利用XPath解析XML文档示例 XSL .Net框架下的XSLT转换技术简介 一个XSLT的简单例子 XSLXSLT板主题整理 xsl入门的好文章 新手学习XSL的好东西 XSL语法介绍 XSL学习心得 - 调用属性值 XSLT与XML转换的详细...

空空如也

空空如也

1 2 3 4 5
收藏数 98
精华内容 39
关键字:

产品介绍word文档模板