Java EasyWord导出word文档
参考链接:
https://blog.csdn.net/weixin_47215296/article/details/125149487
上面的文章已经说明了使用方法,我再说下我使用的经历。
maven依赖
<dependency><groupId>com.sushengren</groupId><artifactId>easyword</artifactId><version>1.1.5</version> </dependency>
模板生成
模板生成变量的插入有两种方式:
- 花括号加变量名,例如:{title}。我在实际使用过程中,发现这种方式有时候会插入失败,不知道什么原因。
- 在word中用书签的方式插入
这里我重点说一下,对于有表格导出需求的文档模板怎么设置。
1.单一表格。先在你的word文档中,加入表格,包含表头和一行tr。表格的样式你可以随意设置,最主要的是下面的一行tr,选中并给它一个书签(不要选择表头),书签名称就是你实体类中@WordProperty注解的内容,后面测试代码中可以很清楚的看到。表格行设置完成之后,再来设置单元格,单元格里面用花括号加上行的书签名称,下划线,单元格名称。
我使用的时候遇到过表格只能展示一行的情况,可以这么操作,在插入行书签的时候,先选择两行,插入完书签之后删掉最后一行。
2.多个表格。先创建表格,选中你想循环创建表格的内容,并给上书签。
然后选择表格行再加上书签。
这是我测试的整体模板,以及最终的效果展示,供大家参考。
测试代码
import com.sushengren.easyword.EasyWord;
import com.sushengren.easyword.annotation.WordProperty;
import com.sushengren.easyword.converters.PictureConverter;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.*;
import java.util.ArrayList;
import java.util.List;@Data
@Builder
@AllArgsConstructor
public class TestWord {/*** 标题*/@WordProperty("title")private String title;/*** 水果列表*/@WordProperty("水果列表")private List<FruitTable> fruitTables;/*** 商品列表*/@WordProperty("商品列表")private List<CommodityTable> commodityTables;/*** 图片*/@WordProperty(value = "logo", converter = PictureConverter.class)private InputStream logo;@Data@NoArgsConstructor@AllArgsConstructorpublic static class FruitTable {/*** 名称*/@WordProperty("名称")private String name;/*** 来源*/@WordProperty("来源")private String source;/*** 单价*/@WordProperty("单价")private Double price;/*** 描述*/@WordProperty("描述")private String desc;}@Data@NoArgsConstructor@AllArgsConstructorpublic static class CommodityTable {/*** 商品类别*/@WordProperty("商品类别")private String type;/*** 商品说明*/@WordProperty("商品说明")private String desc;/*** 类别列表*/@WordProperty("类别列表")private List<CategoryTable> categoryTable;}@Data@NoArgsConstructor@AllArgsConstructorpublic static class CategoryTable {/*** 名称*/@WordProperty("名称")private String name;/*** 来源*/@WordProperty("来源")private String source;/*** 单价*/@WordProperty("单价")private Double price;/*** 描述*/@WordProperty("描述")private String desc;}public static void main(String[] args) throws FileNotFoundException {List<FruitTable> fruitTables = new ArrayList<>();FruitTable f1 = new FruitTable("苹果", "烟台", 5.0, "又红又大的苹果。");fruitTables.add(f1);FruitTable f2 = new FruitTable("芒果", "海南", 8.0, "好吃不贵的芒果。");fruitTables.add(f2);FruitTable f3 = new FruitTable("柑橘", "宜昌", 2.5, "好一个柑橘。");fruitTables.add(f3);List<CategoryTable> categoryTables1 = new ArrayList<>();CategoryTable a1 = new CategoryTable("芭蕉", "火焰山", 6.5, "烈日炎炎,芭蕉冉冉。");categoryTables1.add(a1);CategoryTable a2 = new CategoryTable("樱桃", "泰安", 25.0, "红了樱桃,绿了芭蕉。");categoryTables1.add(a2);List<CommodityTable> commodityTables = new ArrayList<>();CommodityTable c1 = new CommodityTable("水果", "这是一批水果", categoryTables1);commodityTables.add(c1);List<CategoryTable> categoryTables2 = new ArrayList<>();CategoryTable a3 = new CategoryTable("空调", "小行星", 2800.0, "全靠空调续命。");categoryTables2.add(a3);CategoryTable a4 = new CategoryTable("热水器", "哈哈哈", 1525.0, "零冷水。");categoryTables2.add(a4);CommodityTable c2 = new CommodityTable("家电", "这是一堆家电", categoryTables2);commodityTables.add(c2);TestWord testWord = TestWord.builder().title("这是一个word导出测试").fruitTables(fruitTables).commodityTables(commodityTables).logo(new FileInputStream("D:\\Temp\\ai.png")).build();File file = new File("D:\\Temp\\title.docx");FileOutputStream out = new FileOutputStream("D:\\Temp\\测试.docx");EasyWord.of(file).doWrite(testWord).toOutputStream(out);}
}
写在最后
我使用的时候遇到一个问题,插入的段落中如果有“回车”,那么这个段落的最后会自动加上一个回车,不知道是什么原因。
这是没有回车的,导出来很正常
如果我加上回车,就会看到导出的段落最后莫名的多了一个换行,这算是一个小坑吧。
Java EasyWord导出word文档相关推荐
- 【Java实现导出Word文档功能 XDocReport +FreeMarker】
Java实现导出Word文档功能(XDocReport +FreeMarker) 前言 在日常的开发工作中,我们时常会遇到导出Word文档报表的需求,比如公司的财务报表.医院的患者统计报表.电商平台的 ...
- java循环导出word文档_Java使用freemarker导出word文档
通过freemarker,以及JAVA,导出word文档. 共分为三步: 第一步:创建模板文件 第二步:通过JAVA创建返回值. 第三步:执行 分别介绍如下: 第一步: 首先创建word文档,按照想要 ...
- Java——EasyPoi导出word文档,itextpdf转换pdf
EasyPoi导出word文档,itextpdf转换pdf 文章目录 EasyPoi导出word文档,itextpdf转换pdf 前言 一.依赖 二.工具类 1.WordUtil 2.PDF工具类 3 ...
- Java+freemarker 导出Word文档的实现(包括word for Mac 插入域的方法)-静态数据,动态表格list
1. 准备环境 1.1 word版本:MacOS系统下的Office360 word for Mac下好多操作和win的不一样啊啊啊,差点栽在Mac word的模版设计上. win版本的word模版设 ...
- java 动态导出word文档 文档合并分页,浏览器下载,生成,动态表格,加图片
1.官方文档 Poi-tl Documentation word 模板 准备 .docx 文件 再准备一张图片 一起放到项目的resources目录下 impl层 第一个word文档,第二第三个与第一 ...
- JAVA 数据导出Word文档模板的功能实现
对于这个功能,想必也有其他平台会需要吧.比如51job导出文档形式的简历这样.我在这里讲的是用java代码能满足我们实现这一功能的好用的一些方法.废话不多说了. 这种导出word,用XML的方式实现, ...
- Java动态导出word文档内容及图片
前言 最近公司在做一个工业柔性产线管控,项目中有一个需求要将工序中流程图及流程图中的子流程及工步相关信息导入到表格中(因为流程图下的子流程图有无及数量未知,所以最好的办法就是使用动态导入):因为以前更 ...
- java ftl导出word文档 在wps可以打开在office打不开总结自己的一点心得
还是ftl模板的内容格式在自己填充数据的时候有了稍微的改动,改变了它原来的格式,出现这样问题的时候好事一步步排查,或者重头再来,所以在动态填充模板的数据是一定要仔细,一步一步来
- JAVA导出Word文档工具EasyWord
介绍 基于Apache poi封装,在上层做了模型转换的封装,让使用者更加简单方便 只支持docx的导出,不支持doc 下面废话少说 让我们以最快的方式学会用java导出word文档 组件依赖 依赖 ...
最新文章
- 终于找到一个还算满意的blog来安家了
- 厦大AI研究院今日揭牌成立:数学系校友陈纯院士领衔
- 2020-11-5(安卓)
- 数据挖掘:分享两个Pandas使用小陷阱
- hbase命令行在create table时为啥有MIN_VERSIONS而没有MAX_VERSIONS
- power iso linux启动盘,Power ISO Maker/ISO燃烧到磁盘工具 V3.0版
- delphi 点击wsdl出不了描述文件_iOS 13 公测版来了,安装公测版官方描述文件
- 初始activiti工作流引擎
- VxWorks 6.9 内核编程指导之读书笔记 -- VxWorks kernel application (一)
- 【2022年江西省研究生数学建模】水汽过饱和的核化除霾 31页论文分析
- UEFI——PCI/PCIe
- 【7gyy】利用F11恢复崩溃系统
- 2020-2021年度第二届全国大学生算法设计与编程挑战赛(冬季赛)题解
- 58同城产品2面面经
- 罪恶黑名单第一季/全集The Blacklist迅雷下载
- 红外热成像仪测温模块简要介绍说明
- Java实现TCP的长短链接
- 18周过后~(学期总结)
- 西欧5800计算器坐标正反算程序
- Mac和Windows键盘对应关系
热门文章
- 实测!Ubuntu18.04解决Teamview检测为商用问题
- Python AST node转为string(source code)
- ******CSDN后引发 7K7K 、嘟嘟牛、178、多玩、猫扑、人人等各大知名网站数据库下载地址 (转载)...
- Comet OJ - 2019国庆欢乐赛 D1 入学考试 (简单版)
- 基于24位Δ-ΣADC和FPGA的高精度数据采集系统开发
- svg实现水滴相融效果
- 算命的理科生——顺口说说算命的事......
- FireFox必备插件(二)
- svn拉取文件合并_svn如何使用import目录作为工作拷贝+我的svn学习笔记
- 大型系统存储层迁移实践