精华内容
下载资源
问答
  • 因为项目做的是一个体检的系统,需要把体检后获得的数据录入到固定的word模板,最后生成新的word文档。废话不多说上干货; 关于poi-tl poi-tl:poi template language 一个基于poi的word模板生成文档的开源组件...

    需求:

    因为项目做的是一个体检的系统,需要把体检后获得的数据录入到固定的word模板,最后生成新的word文档。废话不多说上干货;

    关于poi-tl

    poi-tl:poi template language 一个基于poi的word模板生成文档的开源组件。
    文档介绍:http://deepoove.com/poi-tl/

    pom.xml

    <dependency>
        <groupId>com.deepoove</groupId>
        <artifactId>poi-tl</artifactId>
        <version>1.3.1</version>
    </dependency>

    poi-tl语法:

    总共就5种语法:

    1.文本模板{{var}} 渲染为 TextRenderData 或 String 数据模型

    2.图片模板{{@photo}} 渲染为 PictureRenderData 数据模型

    3.表格模板{{#var}} 渲染数据模型是 MiniTableRenderData

    4.列表模板{{*var}} 渲染为 NumbericRenderData 数据模型

    5.文档模板{{+var}} 渲染为 DocxRenderData 数据模型

    敲黑板,请看大屏幕:

    案例:

             A.首先准备个模板
    

    姓名 {{name}} 花名 {{oname}} 性别 {{xb}} {{@photo}}
    出生年月 {{csny}} 民族 {{mz}} 政治 {{zz}}
    身份证号 {{sfzjh}} 学籍号 {{xjh}}
    通讯地址 {{txdz}} 联系电话 {{phone}}
    这里写图片描述

            B.代码
    
        /**
         * word模板测试
         * @return
         */
        @PostMapping("/word")
        public String testWord() {
    
    
            Map<String, Object> datas = new HashMap<String, Object>() {
                {
                    // 本地图片
                    put("photo", new PictureRenderData(100, 110, "F:\\123" + "/1.jpg"));
                    put("name", "小姐");
                    put("oname", "包夜500");
                    put("xb", "女");
                    put("csny", "19900101");
                    put("mz", "汉族");
                    put("zz", "团员");
                    put("sfzjh", "451102419900103454");
                    put("xjh", "G511024199");
                    put("txdz", "广东省");
                    put("phone", "1887282121");
    
                }
            };
    
            //不支持doc的格式
            //XWPFTemplate template = XWPFTemplate.compile("C://Users/梦想的开始/Desktop" + "/word.doc");
            XWPFTemplate template = XWPFTemplate.compile("F://123/word.docx");
            System.out.println(template);
            XWPFTemplate render = template.render(datas);
            System.out.println(render);
    
    
            FileOutputStream out;
            try {
                out = new FileOutputStream("F://123" + "/out_picture.docx");
                template.write(out);
                out.flush();
                out.close();
                template.close();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
            return "操作成功";
    
        }
    

    结果展示:

    这里写图片描述

    展开全文
  • C#导入word文件的内容

    2019-05-08 03:34:01
    如果直接点击导入按钮选择要导入Word文件是不可以直接把数据导入到页面上的,因为导入文件格式跟页面上接收的格式不一致,是获取不了要导入进来的数据,所以要下载一个模板,这个模板的格式要跟页面的格式匹配。...
    开发工具与关键技术:VS C#
    撰写时间:2019年 5月 8日
    

    把Word文件的内容导入到页面上的时候,其实就是把数据导入到数据库。如果直接点击导入按钮选择要导入的Word文件是不可以直接把数据导入到页面上的,因为导入的文件格式跟页面上接收的格式不一致,是获取不了要导入进来的数据,所以要下载一个模板,这个模板的格式要跟页面的格式匹配。在下载好的模板上填写要导入的内容,再把这个模板里的内容导入到页面即可。
    下面便是把Word文件的内容导入到页面的操作步骤 :
    首先,把需要下载的模板放在项目里,在控制器定义一个下载模板的方法。定义一个字符串来获取模板的路径,再判断当前的这个路径是否有这么一个模板的存。如果存在就读取这个模板文件再返回;如果不存在就提醒用户下载的模板不存在。如果存在为什么要获取模板文件的MIME类型,因为MIME的全称是Multipurpose Internet Mail Extensions,即多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
    下载文件模板的代码如下:
    在这里插入图片描述
    给这个“下载模板”按钮一个点击事件,再调用在控制器定义好的方法,当用户点击“下载模板”这个按钮的时候就会自动在浏览器上下载文件模板,并保存到该浏览器默认的位置上,每个浏览器默认存放下载的文件的路径不一样。
    在这里插入图片描述
    其次,在页面上用一个Form表单来接收导入的内容,再在Form表单放一个Input标签,然后到控制器定义一个方法来接收表单传递过来的内容。获取“导入试题”这个按钮给它一个点击事件,当用户点击“导入试题”这个按钮的时候就会弹出一个选择文件的提示框。当用户选择要导入文件的时候,Form表单就会把导入文件的内容传递到控制器。
    代码如下:
    在这里插入图片描述
    效果图如下:
    在这里插入图片描述
    然后,当用户选择要导入文件的时候,就会把数据提交到Input标签,会把文件上传到控制器,所以在控制器定义一个方法接收表单里面传递过来的内容,还要对导入的文件进行处理。
    1、判断传输过来的文件是否为空,如果为空就提醒用户"上传的文件为空,请检查数据!";如果不为空就获取文件的名称:

     string FileName = file.FileName;
    

    在这里要注意一下,就用谷歌浏览器和IE浏览器来做个对比,谷歌浏览器获取的是文件名称,而IE浏览器则获取的是文件的路径以及名称,所以要对IE浏览器获取文件时进行处理。

    string[] str = FileName.Split('\\');
                    FileName = str[str.Length - 1];
    

    2、获取文件的扩展名,作用是为了判断文件的类型:

    string fileExtension = Path.GetExtension(FileName);
    

    判断上传文件的类型,如果上传的文件是Word文件就把该文件保存到项目里再读取文件;如果不是Word文件就提醒用户"只能上传word文件!":

     if (".doc||.docx".Contains(fileExtension))
    

    3、如果上传的文件是Word文件就把该文件存储起来,给存储的文件一个名称:

    string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + FileName;s
    

    在保存文件名之前还要检查该目录是否存在,如果这个目录存在就直接保存;如果不存在就创建这个目录再保存:

    if (!Directory.Exists(Server.MapPath("~/Document/Title/Temp/")))
                        {
                            //创建目录/Document/Notice/
                            Directory.CreateDirectory(Server.MapPath("~/Document/Title/Temp/"));
                        }
    

    把该文件名保存到指定的路径上:

    string filePath = Path.Combine(Server.MapPath("~/Document/Title/Temp/"), fileName);
    

    保存文件:

      file.SaveAs(filePath);
    

    4、保存文件之后就读取Word文件,但不可以直接读取Word文件。要把Word文件转换为HTML的文档,再通过一个库文件来读取HTML里面的内容,再对它进行一系列的处理,处理完之后再把字符串返回到页面上。在把Word文件转换为HTML的文档之后,也要给转换的HTML一个名称和保存的路径。

    string htmlName = fileName.Replace(fileExtension, ".html");
       string htmlPath = Path.Combine(Server.MapPath("~/Document/Title/Temp/"), htmlName);
    

    通过库文件来读取HTML里面的内容,Spire.Doc for .NET是一款由E-iceblue公司开发的专业的Word .NET 类库,使用该工具开发人员可以在任意.NET平台(C#,VB.NET,ASP.NET)上快速创建,读取,写入,转换,打印Word文档。作为一个独立的Word 组件,Spire.Doc的运行无需安装Microsoft Word。引入到项目里即可。而且,它可以将Microsoft Word文档创建功能集成到开发者的任何.NET应用程序。
    Spire.Doc.for .NET 是一个专业的word .NET库 ˈspaɪə®

      Document document = new Document(filePath);//将文件读取到document中
       document.SaveToFile(htmlPath, FileFormat.Html);//将文件转化成HTML文档并保存
    

    5、保存文件之后再通过ReadAllText读取文件内容,返回一个包含文件所有行的字符串。替换 html中的标签 给p标签添加一个自定义属性,若有pre标签,则替换成p标签。再去掉 style后面的样式,用正则表达式匹配所有的p标签。对每一行进行处理,保存所有段落,将符合段落内容格式的字符串保存在列表中,抽取p标签中的文字图片内容,因为p标签中可能存在多个文字与图片,所以使用List保存,把保存的内容导入到页面上。

    展开全文
  • C#将数据导入固定word模板

    千次阅读 2018-01-16 17:05:48
    先引入dll文件:  Microsoft.Office.Interop.Word.dll Microsoft.Office.Interop.Word.ApplicationClass wordapp = new Microsoft.Office.Interop.Word.ApplicationClass(); Microsoft.Offi

    先引入dll文件:

    

    Microsoft.Office.Interop.Word.dll

                Microsoft.Office.Interop.Word.ApplicationClass wordapp = new Microsoft.Office.Interop.Word.ApplicationClass();
                Microsoft.Office.Interop.Word.Document doc = null;

                 object nothing = System.Reflection.Missing.Value;
                 object filePath = “模板路径”;
                 doc = wordapp.Documents.Open(ref filePath, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing);

                 doc.Paragraphs.Last.Range.Text = “输出结果”;

                 //直接打开word文件
                 doc = wordapp.ActiveDocument;
                 wordapp.Visible = true;

                 //保存到某一路径

                object filePath2="保存地址";
            doc.SaveAs(ref filePath2, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing);

                doc.Close(ref nothing, ref nothing, ref nothing);

                wordapp.Quit(ref nothing, ref nothing, ref nothing);

    展开全文
  • 前言:java导出word有很多方式,这里介绍最简单...1、将list数据导出到word数据模板如图所示,字段的值暂时用数字1-7代替,这里说明一下为什么要用1-7的数字代替字段值,因为一会要把doc格式的文件转换成xml,这里如果

    前言:java导出word有很多方式,这里介绍最简单的一种,利用freemark模板导出word文档。


    说明:这里用导出一个list列表数据到word文档来举例

    首先导入freeamark依赖,版本号最好不要太低,在maven依赖官网找使用次数最多的附maven依赖地址:https://mvnrepository.com/

    1、将list数据导出到word数据模板如图所示,字段的值暂时用数字1-7代替,这里说明一下为什么要用1-7的数字代替字段值,因为一会要把doc格式的文件转换成xml,这里如果直接填写变量的值的话变量值如果过长会导致word格式发生变化,从而导致解析出来的xml有问题,到最后会影响导出的word文档格式没都没了的情况(这是个坑,我试了很多次才发现是因为变量过长导致的word格式变形从而导致的解析出来的xml文件有问题)

     2.模板建好以后直接另存为xml,这里上图给你们讲一下怎么另存xml,我发现好多人不知道怎么另存为xml,我这里以wps为例子(word office 也一样),点击左上角的文件,找到另存为,选择另存的位置以及格式,这里选择xml如图所示

     

    3.之后我们可以在存放文件的地方得到一个xml文件如图所示

     

    4.使用 可以打开xml文件的工具打开文件,我这里用的是Notepad++

    将文件中的内容复制出来,去在线格式化一下格式,我这里用的是菜鸟教程的在线格式化地址:https://c.runoob.com/front-end/710 

    将格式化之后的内容复制回 Notepad++,接下来就是对xml中的内容做修改。

    5.我们的word表格一共两行,第一行为标题,第二行为我们需要设置的字段值,找到文件中第二个<w:tr></w:tr>标签

     因为我们是将list数据循环设置到word中,所以需要遍历值,遍历语法是freemark的遍历语法,挺简单的,用<#list userList as user></#list>标签将第二行的<w:tr></w:tr>包裹起来如图所示,userList就是你要遍历的list,user就是list中的每个元素,相当于foreach中的item=userList var=user都是一个意思,实在看不懂建议百度一下吧。

    写完外面的循环标签,在设置里面的字段值,找到之前我们填写1-7数字的地方,1为序号,我们用${user_index+1}表示,这样可以自增序号,2-7为user这个实体中的属性,直接替换成${user.属性}即可,不过这里有一点需要注意,就是要对值进行非空判断,不然如果有的值为空就会出现模板解析错误。这里只写一个例子,其他的同理,如图所示

     

     所有属性都替换成如上图的格式以后保存xml文件,然后转换成ftl格式的文件,这里转换不需要像doc转xml一样,直接重命名然后改后缀名即可,如图所示

    6.这样我们的模板就做好了,个人认为模板这里是最麻烦的,因为坑比较多,所以我也是踩了好多坑,最后才成功了,还有一点要说一下,这里最好用doc格式。代码部分比较简单,直接贴代码了,直接copy就可以用

    	/**
    	 * 导出word
    	 *
    	 * @param request
    	 * @param response
    	 */
    	@RequestMapping(params = "exportDoc")
    	public void exportDoc(HttpServletRequest request, HttpServletResponse response,String proId) {
    		//查询专家列表数据
    		List<TSUser> expertList = sinoExaminepaperServiceI.selPaperUser(proId, 0);
            Map<String, List<TSUser>> dataMap = new HashMap<>();
            List<TSUser> list = new ArrayList<>();
            if (expertList != null && expertList.size() > 0) {
    			for (TSUser tsUser : expertList) {
    			    list.add(tsUser);
    			}
    		}
    		dataMap.put("userList",list);
            Configuration configuration = new Configuration(Configuration.VERSION_2_3_29);
            configuration.setDefaultEncoding("utf-8");
    
            PrintWriter out = null;
            Template t = null;
            try {
                configuration.setDirectoryForTemplateLoading(new File(request.getSession().getServletContext().getRealPath("/")+"webpage/com/sino/secretariatexamine/word/"));
                response.reset();
                response.setHeader("Content-Disposition", "attachment;filename=\"" + new String("征求意见专家名单.doc".getBytes("GBK"), "iso8859-1") + "\"");
                response.setContentType("application/x-download;charset=GBK");
                response.setCharacterEncoding("utf-8");
                out = response.getWriter();
                t = configuration.getTemplate("expertList.ftl","utf-8");
                t.process(dataMap, out);
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                out.close();
            }
    
    
        }

     这里是我的业务代码部分,想要使用的要做相应的修改,我做的是一个专家列表数据导出功能,list根据情况修改成要查询的list数据,注意list的key userList,这里的key是和模板中<#list userList as user></#list> 中对应的。

    根据各自情况需要修改的有以下几个部分

    1.查询出来的list

    2.new Configuration(Configuration.VERSION_2_3_29),这里的freemark模板版本改成你maven中导入的freemark模板的版本

    3.设置模板加载地址的路径需要做相应的修改,可以参考https://www.cnblogs.com/fangjian0423/p/freemarker-templateloading-question.html 看下configuration设置加载模板的三个方法

    4.configuration.getTemplate里面填写你的模板名字(我这里将ceshi.ftl改成了expertList.ftl)

     

    补充:如果不是导出list列表数据,只导出一个实体数据,比如自动填写简历那种,更简单,直接将dataMap.put中的list改为实体就行了,然后制作模板的时候去掉外层的list循环,在字段的地方直接${实体的属性}这样就行了,我这里是设置了响应头下载了,如果在本地玩还可以直接将word生成写到磁盘文件中,代码我就不贴了,有需要的可以去百度下。

     

    代码部分相对来说比较简单,只要搞清楚一些设置参数的含义,修改成你项目中相对应的参数就可以了。然后启动项目进行测试就OK了,结果如图,大功告成!

     

     

     

     

     

     

    展开全文
  • java根据word模板生成word文件

    千次阅读 2020-07-30 10:30:45
    1、首先新建一个word模板, 2、另存为xml格式, 3、将xml文件的扩展名直接改成ftl, 4、导入freemaker.jar 2、使用软件打开ftl文件,找到w:binData快速定位图片位置,写上${imgStr}(名字随意,和java代码中的对应...
  • java 根据模板文件生成word文档

    万次阅读 多人点赞 2018-09-19 16:18:05
    最近需要做一个导出word的功能, 在网上搜了下, 有用POI,JXL,iText等jar生成一个word文件然后将数据写到该文件中,API非常繁琐而且拼出来的样式也不美观,于是选择了另一种方式----feemarker基于word模板的导出方式, ...
  • docxurl:指的是你存放docx文件的目录 xlsx1url:指的是你写入xlsx文件的绝对路径 xlsx2url:指的是你在内存中操作完xlsx文件之后要把他存放到哪 returndata:每个人要求的数据格式不一样,这个需要根据你自己的数据...
  • Aspose Word 导入

    千次阅读 2016-01-26 16:21:07
    #region 一条数据的Word导入  stringtempPath = Server.MapPath("~/File/Template.doc");  stringoutputPath = Server.MapPath("~/FileOutput/Template.doc"); //outputPath其实
  • 正好公司要求生成word形式的合同,而且是以模板的形式。这下子就不能用纯生的PHP去写了,网上也有很多纯生PHP去写,但是流程很多,代码也很多,小白的我肯定是能偷懒则偷懒,找到了一个通用的三方库(用composer自动...
  • 一、 将模板word中的特定字段替换(将数据导入word中) 所用jar包一、 将模板word中的特定字段替换(将数据导入word中) 所用jar包开发代码 ... * @param tmp 模板文件 * @param dst 生成后的合同文件 * @p
  • FreeMarker是一款用java语言编写的模版引擎,它是基于模板文件生成其他文本的通用工具。它虽然不是web应用框架,但它很合适作为web应用框架的一个组件。 2.它的特点? ① 一轻量级模版引擎,不需要Servlet环境就...
  • Python批量处理Excel文件信息替换Word模板原由和思路工具准备1. 前期处理1.1 数据处理1.2 模板处理2. 编写代码2.1 使用Pycharm新建项目ExcelToWord2.2 新建ETW.py主程序文件并安装相应库2.3 主要代码块解析3. 打包...
  • 但是怎么导入word数据。发现如果是xml格式,数据格式很易变。如一个标题中如果有中文,后面是个数字,另存成xml时就变成了2个元素了。太郁闷了。 后来找到方法可以分段落读入纯word文档。要找到了word基于模板替换...
  • 1.建立word模板文件 person.dot 2.建立web应用程序 加入Microsoft.Office.Interop.Word引用 3.相关示例代码 ======================== 1.建立word模板文件 person.dot  用书签 标
  • 本文主要讲述如何将word文档试题文件批量导入小程序中 具体请按照下面的步骤操作,如有问题,请评论区留言咨询 第一步:按照模板文件整理题库 第一步:按照模板文件整理题库 第二步:打开电脑,登录小程序题库...
  • java根据模板生成word文件

    千次阅读 2015-01-24 17:13:18
    java根据模板生成word文件 源代码下载地址:http://www.zuidaima.com/share/1550463664884736.htm
  • Java 使用poi,根据word模板导出word文件

    千次阅读 2020-01-16 17:16:37
    标题 使用poi导出word文件 项目需求:需要将数据按照一定的格式导出成word文档。文本替换,表格循环(表格内部行循环,整个表格循环),插入图片等。 参考连接:...
  • word模板Normal.dotm文件的生成与替换

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

    万次阅读 热门讨论 2018-09-13 10:03:10
    2, 前端上传 word 模板 3, 服务端接收将 word 转换为html 返回前端 4, 前端拿到服务端返回的值,将其放到富文本编辑器中 后端主要是第3步 首先搞清楚下要将doc/docx文档转成html/htm的话要怎么处理,根据POI...
  • windows下,使用python 将Excel中数据批量导出到Word模板中生成新的文件
  • Python通过word模板生成新的word文件

    千次阅读 2020-07-01 22:58:13
    功能自定义好的word文档,生成新的word文件 模块地址:https://docxtpl.readthedocs.io/en/latest/ 使用模块 docxtpl 安装方式 在线安装 pip install docxtpl 离线安装,需下载以下安装包 docxtpl-0.10.0.tar.gz ...
  • 一些做五金或其他行业的客户,有很多商品信息和往来单位,这些信息都有电子文档格式,比如WORD或EXCEL,如果用管家婆做账的话,一个一个录入时很麻烦的事情,现在来讲解怎么批量导入到软件里去。
  • Word导入导出与解析

    2019-03-16 10:13:28
    ​ 本文采用Apache的 POI相关API,实现对Word的文档的解析。 commons-fileupload-1.3.3.jar poi-3.16.jar poi-ooxml-3.16.jar ...​ 实现将Word文件上传到Web服务器的指定地址,解析该Word文件...
  • 关于导出提案到文件处理方法 修改word模板 这里用到了freemarker这个...你需要先将你的模板word文件处理一下,修改想要自动填充的位置为freemarker的标志位+id的形式 导出为XML 首先将work导出成纯字符的文件,在...
  • jacob通过word模板生成word文档

    热门讨论 2013-03-05 14:49:32
    java项目, 直接导入eclipse里面或者myeclipse里面就可以运行....通过jacob插件,通过word模板自动填充相应的数据,并且产生文件,为了解决有的tomcat下会乱码, 生成完成之后会转码一下, 解决了中文乱码问题.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,022
精华内容 6,008
关键字:

word导入模板文件