java使用freemarker模板导出word(docx格式;流形式输入输出)

前言:好久没有更文了,最近又再做关于导出word文档项目。其实网上很多有关导出的博文,多数是大同小异的,但是还远远不能满足我的需求。之前写过一篇导出word的文章,那个还不太成熟,随着业务的增加,肯定有了不小的变化,所以今天这篇文章索性就叫续集吧,希望可以帮到大家!上一篇写的是有关doc格式的。具体详情请访问:点击打开链接,在这里说明一下上篇存在的一些问题:1、记得上篇说到获取模板的时候,是通过n...
摘要由CSDN通过智能技术生成

前言:好久没有更文了,最近又再做关于导出word文档项目。其实网上很多有关导出的博文,多数是大同小异的,但是还远远不能满足我的需求。之前写过一篇导出word的文章,那个还不太成熟,随着业务的增加,肯定有了不小的变化,所以今天这篇文章索性就叫续集吧,希望可以帮到大家!

上一篇写的是有关doc格式的。具体详情请访问:点击打开链接,在这里说明一下上篇存在的一些问题:

1、记得上篇说到获取模板的时候,是通过new File("url")的形式来获取的;其实我是不推荐这种方式的,除非是你们的需求就是这样要求的;我在导出的过程中,模板(testword.ftl)是以Blob大型文件存在mysql中的,然后我可以以流的形式获取到这个模板,包括导出过程中,任意涉及到文件的输入输出的时候,尽量的都要使用流来操作;下面我贴一下代码:


我想你百度了很多导出的文章,应该大多数都是以下面这种形式获取的吧:

  System.out.println("---进入createDocArea---");  
        this.configuration.setDirectoryForTemplateLoading(new File("/template/"));//第二种模板路径  
        Template t = null;  
        File outFile = null;  
        byte[] bFile = null;  
        try {  
            t = this.configuration.getTemplate(fileName,"UTF-8");  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        }  
          
        outFile = new File(outFilePath);  
        Writer w = null;  
        FileOutputStream fos = null;  
          
        try {  
            fos = new FileOutputStream(outFile);  
            OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");  
              
            w = new BufferedWriter(osw);  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        } 

输入和输出都是以File的形式;这不是我想要的;我要的是,以流的形式获取,以流的形式导出,然后转换成字节存到数据库中,比如mongo;还是那句话,看你需求。

2、第二个问题就是,写导出很痛苦的,我以为最后成功的导出xxx.doc后就万事大吉了,结果有一天客户说,手机应用wps打开这

  • 9
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值