文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

轻松学会Java导出word,一篇文章就够了!

2023-09-22 16:27

关注

很多小伙伴在工作中,可能又这样一个需求:根据word模板去填充数据,变成我们想要的word文档,这是很多刚进入职场的小白都会碰到的需求。

当遇上这种需求,我们可以通过这篇文章要讲的poi-tl 来做处理。

导入依赖

            com.deepoove        poi-tl        1.5.1    

填充文本

 首先,我们需要先准备一个word文档,必须是.docx结尾的哦。

我们先在指定的位置创建一个测试文档。我这边直接在springboot中的templates目录下创建一个名为test1.docx的文件。
在这里插入图片描述
在这里插入图片描述

 这里需要注意:对于文本数据而言,动态填充的数据,用{{}}包裹即可。
   //掌握如何填充文本类型数据    @Test    void contextLoads() throws IOException {      String path="D:\\QQ_File\\1719036792\\FileRecv\\tuanfei\\src\\main\\resources\\templates\\test1.docx";      //第一步:读取模板        XWPFTemplate compile = XWPFTemplate.compile(path);      //第二步:创建数据,用于把我们模板中的{{}}包裹的变量替换掉,map中保存的key一定要和模板中的变量保持一致        HashMap<String, Object> map = new HashMap<>();        map.put("date", LocalDate.now());        compile.render(map);        //第三步:把设置的参数写入,并生成新的word文档        compile.writeToFile("D:\\QQ_File\\1719036792\\FileRecv\\tuanfei\\src\\main\\resources\\templates\\text.docx");      compile.close();    }

执行上面代码,会发现我们多了一个text.docx 的文档,打开看,发现数据已经被填充了。
在这里插入图片描述

填充图片

还是一样,我们创建一个用于填充数据的模板。不过对于文本而言,填充设置的参数需要用{{@}}来包含住。

我们先在指定的位置创建一个测试文档。我这边直接在springboot中的templates目录下创建一个名为imgTemplate.docx的文件。
在这里插入图片描述
imgTemplate文件打开是这样的:

在这里插入图片描述
当执行下面通过poi-tl实现的填充图片代码:

    @Test    void  test2() throws IOException {        String path="D:\\QQ_File\\1719036792\\FileRecv\\tuanfei\\src\\main\\resources\\templates\\imgTemplate.docx";        //第一步:读取模板        XWPFTemplate compile = XWPFTemplate.compile(path);        //第二步:创建数据,用于把我们模板中的{{}}包裹的变量替换掉,map中保存的key一定要和模板中的变量保持一致        HashMap<String, Object> map = new HashMap<>();        //本地图片        //120,120:代表设图片的长宽        map.put("img1",new PictureRenderData(120,120,"D:\\QQ_File\\1719036792\\FileRecv\\tuanfei\\src\\main\\resources\\templates\\img.png"));        //流图片        map.put("img2",new PictureRenderData(120,120,".png",new FileInputStream("D:\\QQ_File\\1719036792\\FileRecv\\tuanfei\\src\\main\\resources\\templates\\img.png")));        //网络图片        map.put("img3", new PictureRenderData(100, 100, ".jpg", BytePictureUtils.getUrlBufferedImage("https://gss0.baidu.com/-vo3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/314e251f95cad1c8ba1e530c7d3e6709c93d5177.jpg")));        compile.render(map);        compile.writeToFile("D:\\QQ_File\\1719036792\\FileRecv\\tuanfei\\src\\main\\resources\\templates\\Img.docx");        compile.close();    }

打开img.docx文件,发现图片已经被填充进去了
在这里插入图片描述

填充表格

  填充表格的时候,需要使用{{*var}}来填充表格。

还是一样,在指定的位置创建一个测试文档。我这边直接在springboot中的templates目录下创建一个名为TableTemplate.docx的文件。而文件中的内容为:
在这里插入图片描述

然后,编写测试方法,执行以下代码,进行表格的填充

    @Test    public void test() throws IOException {        String path="D:\\QQ_File\\1719036792\\FileRecv\\tuanfei\\src\\main\\resources\\templates\\tableTemplate.docx";        //第一步:读取模板        XWPFTemplate compile = XWPFTemplate.compile(path); //第二步:创建数据,用于把我们模板中的{{}}包裹的变量替换掉,map中保存的key一定要和模板中的变量保持一致      HashMap<String, Object> map = new HashMap<>();      //设置单元格,表头        RowRenderData header = RowRenderData.build(new TextRenderData("6495ED", "姓名"), new TextRenderData("6495ED", "学历"));      //设置表内容,如果在实际应用中,传入一个list集合或者数组,方可用foreach进行循环填充        RowRenderData row0 = RowRenderData.build("张三", "研究生");        RowRenderData row1 = RowRenderData.build(new TextRenderData("李四"), new TextRenderData("博士"));        RowRenderData row2 = RowRenderData.build("王五", "博士后");        map.put("table", new MiniTableRenderData(header, Arrays.asList(row0, row1, row2)));        compile.render(map);        compile.writeToFile("D:\\QQ_File\\1719036792\\FileRecv\\tuanfei\\src\\main\\resources\\templates\\table.docx");        compile.close();    }

执行成功后,在生成文件位置找到对应的文件,打开查看:
在这里插入图片描述
执行成功。。。。。

在实际开发中,我们经常会使用到Word的导出和数据填充。使用poi-tl,我们可以很轻松的就能对word文件进行操作。我写的这篇文章中只对我们常用的三种类型进行讲解。当我们需要更加了解和使用的时候,还是需要查看官方文档能更一步的了解和掌握poi-tl。

POI-TL1.5.x的文档地址:点击进入文档地址

来源地址:https://blog.csdn.net/qq_45979629/article/details/131559238

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯