精华内容
下载资源
问答
  • Java导出Word文件

    2012-10-14 16:16:57
    Java 导出 Word。 可直接运行,有说明文档,有注释,有jar文件
  • java导出word文件

    2021-02-05 10:00:32
    java导出word 演示网站:编号0002 跳转 前提准备: 导入freemarker的jar包 获取ftl模板 导入freemarker的jar包 <dependency> <groupId>org.freemarker</groupId> <artifactId>...

    java导出word

    演示网站:编号0002

    跳转
    在这里插入图片描述


    前提准备:

    1. 导入freemarker的jar包

    2. 获取ftl模板

    3. 导入freemarker的jar包

    <dependency>
    	<groupId>org.freemarker</groupId>
    	<artifactId>freemarker</artifactId>
    	<version>2.3.28</version>
    </dependency>
    
    1. 获取ftl模板

    新建一个word模板,使用${*}进行占位,*为是字段定义的名称,如下所示

    word:

    在这里插入图片描述

    user对象:

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class User {
    
    	// id
        private String id;
    
    	// 用户名
        private String username;
        
        // 密码
        private String password;
    
    	// 性别
        private String sex;
        
    }
    

    然后将word另存为xml格式(注:不要直接修改文件后缀,另保存内有xml格式),然后将.xml的后缀直接修改为.ftl

    在这里插入图片描述

    如果导入一个用户,不需要循环遍历不需要修改user.ftl文件,若导出列表需要循环,需要进行对ftl模板进行修改。

    原始的user.ftl文件如下,很难看清文件格式

    在这里插入图片描述在这里插入图片描述
    使用xml在线格式化(百度搜索)进行格式化一下,如下图所示:

    其中:

    w:tbl 表格开始标志
    w:tblPr 表格属性
    w:tr 表格加一行
    w:tc 表格加一列
    
    <#list 要循环的数据 as 循环后的数据>
    </#list>
    

    如:

    <#list userList as user>
    ${user.id}
    </#list>
    

    在这里插入图片描述

    后端代码:

    @GetMapping("/export")
    public void exportWord(HttpServletResponse response) {
        	// 数据库查出的数据
            List<User> users = userService.queryList();
            
            // 获取导出的word模板
            String path = this.getClass().getClassLoader().getResource("files").getPath();
            File file = new File(path);
    
            // Configuration 用于读取ftl文件
            Configuration configuration = new Configuration(new Version("2.3.0"));
            configuration.setDefaultEncoding("utf-8");
    
            // 设置response的hear,导出word
            PrintWriter out = null;
            try
            {
                configuration.setDirectoryForTemplateLoading(file); //指定路径
                Template template = configuration.getTemplate("user.ftl","utf-8");
                String fileName = URLEncoder.encode("用户列表.doc", "UTF-8");
                response.setContentType("application/msword");
                response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\"");
                response.setCharacterEncoding("utf-8");//此句非常关键,不然word文档全是乱码
                out = response.getWriter();
                template.process(users, out);
            }catch (Exception e)
            {
                e.printStackTrace();
            } finally {
                if(Objects.nonNull(out)) {
                    out.flush();
                    out.close();
                }
            }
    
        }
    

    前端代码:

    window.location.href = 'xxxxx/xxxxx/export'
    
    展开全文
  • Java导出word文件换行符

    千次阅读 2019-04-03 10:07:11
    在到出word文件时,经常要用到换行符,如果在代码中写“\n”,则会被替换成空格。 方法之一:是在需要设置换行的地方添加字符串“<w:br />”,word文件中只识别这种标志符号 ...

       在到出word文件时,经常要用到换行符,如果在代码中写“\n”,则会被替换成空格。

    方法之一:是在需要设置换行的地方添加字符串“<w:br />”,word文件中只识别这种标志符号

    展开全文
  • java生成word的实例 java导出Word文档的实例 项目说明
  • java生成word的实例 java导出Word文档的实例.rar
  • java导出word文档

    2018-12-25 17:30:39
    在项目中有的时候需要导出文件,一般... 新建一个word文档,设置好需要导出文件的格式。将文件后缀修改为: .ftl;将需要填入数据的地方修改为:${station} 格式; { }中的字段不是乱设的,后面有用到。 二、获...

            在项目中有的时候需要导出文件,一般情况下都是Excel文件。但是有时候也是需要导出word文件。今天我就根据以前的项目,修改的导出word文件的方法。

    一、设置word文件模板

           新建一个word文档,设置好需要导出的文件的格式。将文件后缀修改为: .ftl;将需要填入数据的地方修改为:${station} 格式;

    { }中的字段不是乱设的,后面有用到。

    二、获取数据后,将数据按模板的字段设置到map中

        Service代码:

    public Map<String,Object> exportFile(String id){
            TroublesDao dao = new TroublesDaoImpl();
            TroublePrintingBean bean = dao.exportFile(id);
            Map<String,Object> map = new HashMap<String, Object>();
            map.put("station" ,bean.getStation_name());
            map.put("reporter" ,bean.getReporter());
            map.put("equipment" , bean.getEqu_name());
            map.put("phone" , bean.getPhone());
            map.put("report_time" , bean.getReport_time());
            map.put("happen_time" , bean.getTrouble_happen_time());
            map.put("title" , bean.getTheme());
            map.put("msg" , bean.getLarge()+"-"+bean.getSmall()); //故障点基本信息格式:故障大类 - 故障小类
            map.put("level" , bean.getTrouble_number());
            String LatestTime = "";//最后解决时间
            try {
                String report_time = bean.getReport_time();   //上报时间
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                Date date = sdf.parse(report_time); //将String时间格式转换成Date格式
                Calendar cal = Calendar.getInstance();
                cal.setTime(date);//设置起时间
                cal.add(Calendar.DATE, 3);//时间增加3天;最后上报时间格式为:上报时间+故障点时效(72小时,即3天)
                LatestTime = sdf.format(cal.getTime());//最后解决时间
            } catch (ParseException e) {
                e.printStackTrace();
            }
            map.put("last_finish_time" , LatestTime);
            map.put("remark" , bean.getTrouble_describe());
            //下面两个字段虽然是空的,但是不能删。应为ftl模板文件中给了他们占位符,删除了会在导出文件时出异常。以后需要有数据时替换空字符串就好
            map.put("analysis" , "");//故障分析
            map.put("deal_way" , "");//解决方法
            return map;
        }

    三、用IO流输出

         Controller代码:

    /**
         * 导出
         * return 0:导出成功;1:导出异常
         */
        @Override
        @RequestMapping("/exportFile")
        @ResponseBody
        public String exportFile(HttpServletRequest request){
            String id = request.getParameter("id");
            Map<String,Object> map= new TroublesServiceImpl().exportFile(id);
            Configuration configuration = new Configuration();
            configuration.setDefaultEncoding("UTF-8");
           String path =  request.getSession().getServletContext().getRealPath("/files");//获取webroot文件下的files文件夹路径
            Template t = null;
            try {
                configuration.setDirectoryForTemplateLoading(new File(path));  //FTL文件所存在的位置
                t = configuration.getTemplate( File.separator + "trouble_model.ftl","UTF-8"); //文件名;File.separator:获取当前系统的路径斜杠
                File outFile = new File(path +File.separator + map.get("station")+"-"+map.get("title")+".doc");//设置导出的文件路径;导出的文件名为:油站名-故障主题
                FileOutputStream fos = new FileOutputStream(outFile);
                OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
                Writer out = new BufferedWriter(osw);
                t.process(map, out);
                if (fos != null){
                    fos.close();
                }
                if(osw != null){
                    osw.close();
                }
                if(out != null){
                    out.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
                return "1";
            }
            return "0";
        }

    开发时遇到的BUG一:

            在导出文件后,打开文件时,报:文件被java …… 占用,无法操作;引起这种原因是输出流没有关闭,一直占着这个文件,所以无法打开。

           解决方法:关闭流;

    开发时遇到的BUG二:

          导出文件后,打开文件时,报:根据结构,XML数据无效;

          

          解决方法:

          在下面的代码中,都要加上UTF-8;

    configuration.setDefaultEncoding("UTF-8");
    t = configuration.getTemplate( File.separator + "trouble_model.ftl","UTF-8");
    OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");

     

    展开全文
  • 求助,java导出word文件时特殊字符乱码 如姓名,中间的那个点 张三•李四
  • JAVA导出word文档

    2021-03-04 11:43:34
    * 导出word * <p>第一步生成替换后的word文件,只支持docx</p> * <p>第二步下载生成的文件</p> * <p>第三步删除生成的临时文件</p> * 模版变量中变量格式:{{foo}} * @...

    核心代码如下

    /**
         * 导出word
         * <p>第一步生成替换后的word文件,只支持docx</p>
         * <p>第二步下载生成的文件</p>
         * <p>第三步删除生成的临时文件</p>
         * 模版变量中变量格式:{{foo}}
         * @param orderNo 根据自己的情况传入参数 即文件名字
         * @param templatePath word模板地址 默认在resource下面
         * @param fileName 文件名 文件名字和orderNoY一直 后缀多个(.docx)
         * @param params 替换的参数 word文档模板中替换的参数
         * @param response HttpServletResponse
         */
        public static void exportWord(String orderNo,String templatePath, String fileName, Map<String, Object> params,
                                       HttpServletResponse response) {
            Assert.notNull(templatePath,"模板路径不能为空");
            Assert.notNull(fileName,"导出文件名不能为空");
            Assert.isTrue(fileName.endsWith(".docx"),"word导出请使用docx格式");
    
            try {
                XWPFDocument doc = WordExportUtil.exportWord07(templatePath, params);
                FileOutputStream fos = new FileOutputStream(fileName);
                doc.write(fos);
                // 设置强制下载不打开
                response.setContentType("application/force-download");
                // 设置文件名
                response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(orderNo + ".doc", "UTF-8"));
    
                OutputStream out = response.getOutputStream();
                doc.write(out);
                out.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    

    word模板

    {{insuredName}}:
    我司对借款人{{cusName}}(统一信用代码:{{identifiyNumber}})提出投保{{riskName}}业务申请已经受理,对该客户的承保意见为:
    

    word模板只是简单一段话,里面所需要的参数和map里面的Key一致。

    以上为java导出word模板,如需转载请注明处处。

    展开全文
  • 使用freemarker模板导出word文档,用的比较多。这里也是采用的这种方式。1 编辑一个word文件的模板,用于在程序中需要读入填充在模板中的数据先用字母代替,注意word版本为word2003或高于这个版本;如:test.doc2 把...
  • Java导出Word文档的实现

    千次阅读 热门讨论 2020-10-18 16:17:13
    在日常的开发工作中,我们时常会遇到导出Word文档报表的需求,比如公司的财务报表、医院的患者统计报表、电商平台的销售报表等等。 导出Word方式多种多样,通常有以下几种方式: 1. 使用第三方Java工具类库Hutool...
  • java导出文件, freemarker导出word需要ftl文件java导出Word常见问题。2.TXT修改后缀名为.ftl
  • 前言:java导出word有很多方式,这里介绍最简单的一种,利用freemark模板导出word文档。 说明:这里用导出一个list列表数据到word文档来举例 首先导入freeamark依赖,版本号最好不要太低,在maven依赖官网找使用...
  • Freemarker java导出word文档 ** 一、生成Word模板 生产word模版主要分为两步,一个是把word文档另存为xml文档,注意是另存为。然后把xml文档后缀改为ftl文档。在编辑word文档的时候,最好把需要填充或替换的位置,...
  • java导出word文档(easypoi)

    千次阅读 2019-03-14 18:30:53
    导出word,引用的是easypoi的jar 第一步:导入jar <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>3.0.3</version>...
  • 使用的POI接口 传入一个Map,然后根据key:value的形式填充word文档。 ...@ApiOperation(value = "导出word文档") @ApiImplicitParams({@ApiImplicitParam(name = "response",value = "返回流"...
  • Java导出Word文档

    2013-03-15 17:00:27
    导出需要jar包:iText-5.0.6.jar,iTextAsian.jar,iText-rtf-2.1.7.jar,jxl.jar,网上有大把 以下都是我以前项目中用过的...导出word: package com.bank.util; import java.awt.Color; import java.io.FileOut
  • 使用java实现导出word的功能,简单好用
  • Java导出Word文档案例

    2012-05-10 21:55:52
    最近做的一个Flex项目中要把报表导出Word文件中。网上查了好多资料后最终在网友的帮助和自己的奋斗下成功搞定。现把代码贴出来供大家批评指正并一起学习。 package org.replace; import java.io.File; ...
  • 使用Java导出word文档

    2018-03-05 10:04:16
    先创建一个word文档,按照需求在word中填好一个模板,然后把对应的数据换成变量2.另存为–&gt;保存类型:word2003XML文档(∗.xml)3.用变成工具打开以保存的xml文件,检查你的2.另存为–&gt;保存类型:word2003...
  • 使用freemarker技术,首先将word模板另存为xml文档,方便填充数据。然后将后缀名改为ftl,简单方便.
  • 昨天晚上被壳妹,威逼利诱,做点小东西,其中就有一个POI导出Word文档。并且最好不要用freemarker模板导出word文档,只好手动来一个工具类了。供参考学习显示界面49da6226c7fb4e8492c610d0af3103fa-WX...
  • 使用java导出word文档

    2018-05-25 17:55:46
    这时候,我们应该考虑使用FreeMarker的模板技术快速实现这个复杂的功能,实现思路是这样的:先创建一个word文档,按照需求在word中填好一个模板,然后把对应的数据换成变量(你自己默认好的),然后将文档保存为xml...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,720
精华内容 7,888
关键字:

java导出word文件

java 订阅