生成复杂二维码 生成复杂word


生成复杂二维码 生成复杂word

背景

今天,项目经理飞哥一步三蹦地来找我,看样子心情不错 , 他对我说:“小米,运营团队那边对咱们的努力很是认可啊,这季度奖金大大的有!你小子好样的~”,我心想老大来找我不应该是这个原因,还是要有任务安排给我,但嘴上说着:“哪里哪里,都是老大的功劳”……
果不其然,飞哥笑了一会儿又跟我说:“刚才财务部的马总找我,跟我说现在咱们系统中的报销单很麻烦,需要根据系统上的数据 , 手动一个一个字的录入到word中,他希望系统新增一个按钮【生成报销单】直接自动导出一个报销单,小米 , 你觉得从技术上能实现不?”我说:“保证完成任务!”

需求


生成复杂二维码 生成复杂word

生成复杂二维码 生成复杂word

报销单由两部分组成:
  • 第一部分是由基础数据汇总的表格,详细说明每一笔费用及审批流情况
  • 第二部分是由报销单附带的发票数量(上面两个图)
接下来进行开发该需求 。

POM引入


生成复杂二维码 生成复杂word

关键词说明

  • 段落:一个文档包含多个段落,一个段落包含多个Runs,一个Runs包含多个Run , Run是文档的最小单元 。XWPFRun代表具有相同属性的一段文本 。
  • 表格:一个文档包含多个表格,一个表格包含多行 , 一行包含多列(单元格),每一单元格的内容相当于一个完整的文档 。

生成复杂二维码 生成复杂word

创建document对象


生成复杂二维码 生成复杂word

加入标题1样式


生成复杂二维码 生成复杂word

标题处理

在这里我把标题也理解为是一个段落,代码如下:
生成复杂二维码 生成复杂word

申请人和申请时间

申请人和申请时间也是一个段落,代码如下:
生成复杂二维码 生成复杂word

费用明细

费用明细首先是从数据库中查询出来,然后通过遍历费用集合,生成相应的表格,代码如下:
生成复杂二维码 生成复杂word

审核情况和费用明细是相同的处理,不做赘述 。

报销单附件

报销单附件是先传到oss上,oss给我们的是一个url地址 , 所以我们需要通过从url中获取BufferedImage对象,然后把它转化为流对象,放入到“段落”中 , 代码如下:


生成复杂二维码 生成复杂word

至此,一个复杂的word文档搞定,我长长的呼出一口气……

写在最后

【生成复杂二维码 生成复杂word】好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货 。

相关经验推荐