废话不多说,导入如下2个依赖,冲冲冲......

maven或者gradle依赖下载中心      https://mvnrepository.com/

    implementation group: 'com.lowagie', name: 'itext', version: '2.1.7'implementation group: 'com.lowagie', name: 'itext-rtf', version: '2.1.7'

工具类正文

import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.lowagie.text.*;
import com.lowagie.text.Font;
import com.lowagie.text.rtf.RtfWriter2;
import com.soe.family.redis.dto.TableDto;
import com.soe.family.redis.dto.TextDto;
import com.soe.family.redis.dto.WordContent;import java.awt.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;/*** 生成word工具类* 1、可扩展,word一般有表格【table】、文本【text】、图片【picture】等几种形式* 2、以流的方式传递文件【数据】* 3、*/
public class CreateDocUtil {//    private static Logger log = Logger.getLogger(CreateDocUtil.class);public static void createDocument(String filePath, String fileName, List<WordContent> datas){// 输出文件File outFile = new File(filePath + File.separator + fileName + ".doc");// 如果输出目标文件夹不存在,则创建if (!outFile.getParentFile().exists()) {outFile.getParentFile().mkdirs();}//创建Word文件,设置纸张的大小Document document = new Document(PageSize.A4);try {//创建word文档RtfWriter2.getInstance(document,new FileOutputStream(outFile));//打开文档document.open();if (!datas.isEmpty()) {for (WordContent data : datas) {JSONObject jsonObject = JSONUtil.parseObj(data);String textJson = jsonObject.getStr("text");String tableJson = jsonObject.getStr("table");if (textJson != null) {//如果有标题就创建标题if (data.getText().getTitle() != null) {Paragraph header = new Paragraph(data.getText().getTitle(), new Font(Font.NORMAL, 13, Font.BOLD, new Color(0, 0, 0)));header.setAlignment(Element.ALIGN_CENTER);//写入标题document.add(header);}//创建段落 NORMAL正常Paragraph paragraph = new Paragraph(data.getText().getContent(), new Font(Font.NORMAL, 11, Font.NORMAL, new Color(0, 0, 0)));//设置段落为左对齐paragraph.setAlignment(Element.ALIGN_LEFT);//设置首行缩进paragraph.setFirstLineIndent(20);//写入段落document.add(paragraph);}if (tableJson != null) {String[] header = data.getTable().getHeader();String[][] infos = data.getTable().getInformation();//创建多个表格Table aTable = new Table(header.length);
/*                      aTable.setTableFitsPage(true);aTable.setCellsFitPage(true);aTable.setLastHeaderRow(10);aTable.setOffset(5);aTable.setAutoFillEmptyCells(true);*/aTable.setAlignment(4);for (String head : header) {//把表格上方的标题创建出来aTable.addCell(new Cell(head));}//把数据填写到表格中,只要够了表格数量会自动换行for (String[] info : infos) {for(String number : info) {aTable.addCell(new Cell(number));}}document.add(aTable);document.add(new Paragraph("\n"));}}}//关流document.close();System.out.println("输出成功!");} catch (FileNotFoundException | DocumentException e) {System.out.println("生成文档失败!");e.printStackTrace();}}public static void main(String[] args) throws FileNotFoundException {List<WordContent> datas = new ArrayList<>();WordContent wordContent = new WordContent();TextDto textDto = new TextDto();textDto.setTitle("我就是我,不一样的烟火!");textDto.setContent("壬戌之秋,七月既望,苏子与客泛舟游于赤壁之下。清风徐来,水波不兴。举酒属客,诵明月之诗,歌窈窕之章。少焉,月出于东山之上,徘徊于斗牛之间。白露横江,水光接天。" +"纵一苇之所如,凌万顷之茫然。浩浩乎如冯虚御风,而不知其所止;飘飘乎如遗世独立,羽化而登仙。\n 于是饮酒乐甚,扣舷而歌之。歌曰:“桂棹兮兰桨,击空明兮溯流光。渺渺兮予怀," +"望美人兮天一方。”客有吹洞箫者,倚歌而和之。其声呜呜然,如怨如慕,如泣如诉,余音袅袅,不绝如缕。舞幽壑之潜蛟,泣孤舟之嫠妇。 苏子愀然,正襟危坐而问客曰:“何为其然也?”客曰:" +"“月明星稀,乌鹊南飞,此非曹孟德之诗乎?西望夏口,东望武昌,山川相缪,郁乎苍苍,此非孟德之困于周郎者乎?方其破荆州,下江陵,顺流而东也,舳舻千里,旌旗蔽空,酾酒临江," +"横槊赋诗,固一世之雄也,而今安在哉?况吾与子渔樵于江渚之上,侣鱼虾而友麋鹿,驾一叶之扁舟,举匏樽以相属。寄蜉蝣于天地,渺沧海之一粟。哀吾生之须臾,羡长江之无穷。挟飞仙以遨游" +",抱明月而长终。知不可乎骤得,托遗响于悲风。\n” 苏子曰:“客亦知夫水与月乎?逝者如斯,而未尝往也;盈虚者如彼,而卒莫消长也。盖将自其变者而观之,则天地曾不能以一瞬;自其不变者" +"而观之,则物与我皆无尽也,而又何羡乎!且夫天地之间,物各有主,苟非吾之所有,虽一毫而莫取。惟江上之清风,与山间之明月,耳得之而为声,目遇之而成色,取之无禁,用之不竭,是造物者" +"之无尽藏也,而吾与子之所共适。”客喜而笑,洗盏更酌。肴核既尽,杯盘狼籍。相与枕藉乎舟中,不知东方之既白。 ");wordContent.setText(textDto);TableDto tableDto = new TableDto();tableDto.setHeader(new String[]{"项目类别", "实施方案", "规划环评", "大纲+报告书", "仅大纲", "报告书", "报告表", "补充报告", "补充报告书", "补充报告表"});tableDto.setInformation(new String[][]{new String[]{"1", "2", "3", "4", "5", "6", "7", "8", "9",""},new String[]{"我","是","最","优","秀","的","男","人","",""},new String[]{"我","特别","想","喜欢","一个","人",",","和她","相爱","到老去"}});wordContent.setTable(tableDto);datas.add(wordContent);WordContent wordContent2 = new WordContent();TextDto textDto2 = new TextDto();textDto2.setContent("时维九月,序属三秋。潦水尽而寒潭清,烟光凝而暮山紫。俨骖騑于上路,访风景于崇阿;临帝子之长洲,得天人之旧馆。层峦耸翠,上出重霄;飞阁流丹,下临无地。鹤汀凫渚,穷岛屿之萦回;桂殿兰宫,即冈峦之体势。\n" +"披绣闼,俯雕甍,山原旷其盈视,川泽纡其骇瞩。闾阎扑地,钟鸣鼎食之家;舸舰弥津,青雀黄龙之舳。云销雨霁,彩彻区明。落霞与孤鹜齐飞,秋水共长天一色。渔舟唱晚,响穷彭蠡之滨;雁阵惊寒,声断衡阳之浦。\n" +"遥襟甫畅,逸兴遄飞。爽籁发而清风生,纤歌凝而白云遏。睢园绿竹,气凌彭泽之樽;邺水朱华,光照临川之笔。四美具,二难并。穷睇眄于中天,极娱游于暇日。天高地迥,觉宇宙之无穷;兴尽悲来,识盈虚之有数。望长安于日下,目吴会于云间。地势极而南溟深,天柱高而北辰远。关山难越,谁悲失路之人?萍水相逢,尽是他乡之客。怀帝阍而不见,奉宣室以何年?");wordContent2.setText(textDto2);datas.add(wordContent2);JSONArray objects = JSONUtil.parseArray(datas);System.out.println(objects);/*** [{*     "text": {*        "title": "我就是我,不一样的烟火!",*        "content": "壬戌之秋,七月既望,苏子与客泛舟游于赤壁之下。清风徐来,水波不兴。举酒属客,诵明月之诗,歌窈窕之章。少焉,月出于东山之上,徘徊于斗牛之间。白露横江,水光接天。纵一苇之所如,凌万顷之茫然。浩浩乎如冯虚御风,而不知其所止;飘飘乎如遗世独立,羽化而登仙。\n 于是饮酒乐甚,扣舷而歌之。歌曰:“桂棹兮兰桨,击空明兮溯流光。渺渺兮予怀,望美人兮天一方。”客有吹洞箫者,倚歌而和之。其声呜呜然,如怨如慕,如泣如诉,余音袅袅,不绝如缕。舞幽壑之潜蛟,泣孤舟之嫠妇。 苏子愀然,正襟危坐而问客曰:“何为其然也?”客曰:“月明星稀,乌鹊南飞,此非曹孟德之诗乎?西望夏口,东望武昌,山川相缪,郁乎苍苍,此非孟德之困于周郎者乎?方其破荆州,下江陵,顺流而东也,舳舻千里,旌旗蔽空,酾酒临江,横槊赋诗,固一世之雄也,而今安在哉?况吾与子渔樵于江渚之上,侣鱼虾而友麋鹿,驾一叶之扁舟,举匏樽以相属。寄蜉蝣于天地,渺沧海之一粟。哀吾生之须臾,羡长江之无穷。挟飞仙以遨游,抱明月而长终。知不可乎骤得,托遗响于悲风。\n” 苏子曰:“客亦知夫水与月乎?逝者如斯,而未尝往也;盈虚者如彼,而卒莫消长也。盖将自其变者而观之,则天地曾不能以一瞬;自其不变者而观之,则物与我皆无尽也,而又何羡乎!且夫天地之间,物各有主,苟非吾之所有,虽一毫而莫取。惟江上之清风,与山间之明月,耳得之而为声,目遇之而成色,取之无禁,用之不竭,是造物者之无尽藏也,而吾与子之所共适。”客喜而笑,洗盏更酌。肴核既尽,杯盘狼籍。相与枕藉乎舟中,不知东方之既白。 "*        },*    "table": {*       "header": ["项目类别", "实施方案", "规划环评", "大纲+报告书", "仅大纲", "报告书", "报告表", "补充报告", "补充报告书", "补充报告表"],*        "information": [*             ["1", "2", "3", "4", "5", "6", "7", "8", "9", ""],*             ["我", "是", "最", "优", "秀", "的", "男", "人", "", ""],*          ["我", "特别", "想", "喜欢", "一个", "人", ",", "和她", "相爱", "到老去"]*       ]*    }* }, {*  "text": {*        "content": "时维九月,序属三秋。潦水尽而寒潭清,烟光凝而暮山紫。俨骖騑于上路,访风景于崇阿;临帝子之长洲,得天人之旧馆。层峦耸翠,上出重霄;飞阁流丹,下临无地。鹤汀凫渚,穷岛屿之萦回;桂殿兰宫,即冈峦之体势。\n披绣闼,俯雕甍,山原旷其盈视,川泽纡其骇瞩。闾阎扑地,钟鸣鼎食之家;舸舰弥津,青雀黄龙之舳。云销雨霁,彩彻区明。落霞与孤鹜齐飞,秋水共长天一色。渔舟唱晚,响穷彭蠡之滨;雁阵惊寒,声断衡阳之浦。\n遥襟甫畅,逸兴遄飞。爽籁发而清风生,纤歌凝而白云遏。睢园绿竹,气凌彭泽之樽;邺水朱华,光照临川之笔。四美具,二难并。穷睇眄于中天,极娱游于暇日。天高地迥,觉宇宙之无穷;兴尽悲来,识盈虚之有数。望长安于日下,目吴会于云间。地势极而南溟深,天柱高而北辰远。关山难越,谁悲失路之人?萍水相逢,尽是他乡之客。怀帝阍而不见,奉宣室以何年?"*    }* }]*/createDocument("E:\\app\\test","我是你爸爸", datas);}}

以下是封装的实体类

import lombok.Data;@Data
public class WordContent {private TextDto text;private TableDto table;private PhotoDto photo;
}public class TableDto {/*** 表格头内容*/private String[] header;/*** 表格内的数据信息*/private String[][] information;
}
@Data
public class TextDto {/*** 标题,也可以做小标题*/private String title;/*** 段落文字内容*/private String content;
}
@Data
public class PhotoDto {/*** 图片内容*/private String photo;
}

本文还在探索与完善中,望能与大家探讨;

操作word文档一般有下载、查看、打印等等功能..........

以下有前辈的笔记

使用ITEXT创建word表格_慕课手记

如何把图片转换成base64在后台转换成图片放在本地_慕课手记

Java 打印Word文档 - E-iceblue - 博客园

下面是蓝冰科技对一系列办公软件的封装,支持多种语言!

Spire.Doc for Java 中文教程

Java Word工具类--之Gradle项目创建相关推荐

  1. Hutool Java常用工具类汇总

    简介 Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以"甜甜的". Hu ...

  2. iText操作Word工具类

    2019独角兽企业重金招聘Python工程师标准>>> package com.loongtao.report.util;import java.io.FileNotFoundExc ...

  3. java常用工具类和Hutool常用的工具类整理

    java常用工具类和Hutool常用的工具类整理 1.java常用工具类 1.1 Scanner类 /*** Scanner 类*/@Testpublic void testScanner() {Sc ...

  4. java+构建+工具+Ant+Maven+Gradle

    java+构建+工具+Ant+Maven+Gradle Ant+Maven+Gradle+............ 目前: Ant已经销声匿迹.Maven也没落了,而Gradle的发展则如日中天. M ...

  5. Java常用工具类JsonUtils

    Java常用工具类JsonUtils 一.项目添加pom文件 <dependency><groupId>com.google.code.gson</groupId> ...

  6. JAVA常用工具类(实用高效)

    JAVA常用工具类(根据GITHUB代码统计) 从Google你能搜索到大量的关于Struts,Spring,Hibernate,iBatis等比较大的框架的资料,但是很少有人去关注一些小的工具包,但 ...

  7. Java生成图片工具类

    Java生成图片工具类 最初版本(仅提供思路,生成时间长,根据自己的需要自己优化) package com.xhpc.charging.station.utils.img;import java.aw ...

  8. java 屏幕截图 工具类

    java 屏幕截图工具类,可以截取当前屏幕画面.保存图片格式支持jpg.png这2中格式,提供main函数测试.此类需要用到的地方很广,比如在CS系统中可以完成截图功能.相当于操作系统的截图功能,图片 ...

  9. UrlUtils工具类,Java URL工具类,Java URL链接工具类

    UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...

  10. Java并发工具类(闭锁CountDownLatch)

    并发工具类系列: Java并发工具类(闭锁CountDownLatch) Java并发工具类(栅栏CyclicBarrier) Java并发工具类(信号量Semaphore) 闭锁是一种同步工具类,可 ...

最新文章

  1. r语言手动算两个C指数p值,如何用R语言进行Pvalue显著性标记?
  2. android crash 定位,Android NDK Crash 定位分析
  3. 【图像分割应用】医学图像分割小总结
  4. c++ 8.整数加法实现
  5. 卡通渲染进阶 = toonlighting + outline + rimlighting + hair specular
  6. 中奖人js滚动效果_js使用transition效果实现无缝滚动
  7. 手桌面上没有计算机,手把手教你电脑桌面图标都不见了怎么办
  8. ROS在rviz中实时显示轨迹(nav_msgs/Path消息的使用)
  9. Python >>> 基于UDP 协议的实时网络视频传输
  10. Frida 代码提示
  11. 高仿富途牛牛-组件化-优秀的时钟
  12. 微信小程序入门使用(一)
  13. Linux系统编程笔记(李慧琴) 2
  14. label 字体添加中划线和下划线
  15. 从零开始安装搭建win10与ubuntu20.04双系统开发环境——集安装、配置、软件、美化、常见问题等于一体的——超详细教程
  16. 最容易上手,也最有用的炒股绝招-3年翻N倍!!
  17. 零基础编程——块语言编程游戏攻略之动画篇
  18. 机器人关节(Joint)之间的坐标变换(Transform)
  19. 为C1Menu for Silverlight添加动画显示效果
  20. js43刀片服务器内存位置,IBM Power服务器简介(ppt 43页)-精.ppt

热门文章

  1. 让优秀成为一种习惯——笔录
  2. 手机号正则(2020年4月15日)
  3. 微型计算机的地址加法器,地址加法器
  4. Easyui--官网
  5. 转帖]实现永久保存注册表数据(转自阿冰blog)
  6. 论坛mysql表设计_网站论坛如何制作—简单论坛数据库的设计与操作
  7. 【macOS免费软件推荐】第8期:IINA+
  8. 往年报名破千人,南京大学计算机系2022年夏令营来袭
  9. 算法竞赛入门经典(紫书)第四章——Spreadsheet Tracking UVA-512
  10. npm ERR code ETIMEDOUT npm ERR syscall connect npm ERR errno ETIMEDOUT npm ERR network reques...