当前位置: 首页 > news >正文

手机wap网站 源码怎么封闭网站

手机wap网站 源码,怎么封闭网站,企业营销网站建设的基本步骤,深圳企业建站公司文章目录 一、前言二、环境准备三、使用流程1、 标准DOCX模板创建2. 占位符语法详解 四、实战代码示例单测代码执行结果: 总结 一、前言 Word文档动态生成长期面临三大痛点: 传统POI的API操作繁琐(需手动创建Run/Paragraph等元素&#xff0…

文章目录

  • 一、前言
  • 二、环境准备
  • 三、使用流程
    • 1、 标准DOCX模板创建
    • 2. 占位符语法详解
  • 四、实战代码示例
    • 单测代码
    • 执行结果:
  • 总结


一、前言

Word文档动态生成长期面临三大痛点:

  • 传统POI的API操作繁琐(需手动创建Run/Paragraph等元素)、
  • 复杂格式难以保持一致性
  • 大文件导出易引发内存溢出

poi-tl作为基于Apache POI的模板引擎,通过声明式模板设计实现了代码与样式的解耦,其轻量级内核(仅1.2MB)相比原生POI减少80%的代码量,在10万行数据量场景下内存消耗降低65%。

本文基于实际报表需求场景,详解如何通过模板语法与数据绑定机制实现高效文档输出,助力你摆脱低效的文档构造模式,掌握导出数据到word到技术能力。


二、环境准备

  1. JDK版本要求(1.8+)
  2. Maven依赖配置
<dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.1</version>
</dependency>

三、使用流程

1、 标准DOCX模板创建

先创建好一个word文档,内容是自己的报表模板, 直接贴到word文档里就好。
在指定位置,加上占位符标签,后续由poi-tl进行模板内容替换。

模板内容:

标题:{{year}}年 {{month}}月——统计报表条件标签
{{?hasData}}
这里是条件标签,标签值为true时,会展示这块内容
表格:
{{#table}}
{{/hasData}}{{?withoutData}}
指定的时间范围内,查询不到数据.
{{/withoutData}}

2. 占位符语法详解

  • 文本变量:{{title}}
  • 表格变量:{{#table}}
  • 条件判断:{{?condition}}…{{/condition}}

四、实战代码示例

单测代码

/*** @Author: suwg* @Date: 2025/3/19*/
@RunWith(MockitoJUnitRunner.class)
public class CompArchiveAuditServiceTest {@Test@SneakyThrowspublic void testWord() {String mainDocPath = "/Users/suweibo/Documents/模板.docx";// 构建合并文档集(支持批量)try (InputStream inputStream = new FileInputStream(mainDocPath)) {Map<String, Object> data = new HashMap<>();data.put("year", "2025");data.put("month", "03");data.put("hasData", true);   // true 则会展示标签包裹起来的内容data.put("withoutData", false); // false 则不会展示标签包裹起来的内容// 表格造数List<ArchivesDto> dtoList = new ArrayList<>();ArchivesDto dto = new ArchivesDto();dto.setAlarmType(4);dto.setWorkOrderCount(10);dto.setWordHandleResult("3条车辆续航低客户自行充电,7条无用车人联系方式");dtoList.add(dto);//表格数据构造RowRenderData headerRow = Rows.of("告警名称", "告警数量", "原因排查和处理方式").textBold().create();List<RowRenderData> tableData = new ArrayList<>();//从业务Dto对象读取对应字段的值,转成Stringfor (ArchivesDto archivesDto : dtoList) {RowRenderData row = Rows.of(WarningContentEnum.getMsgByType(archivesDto.getAlarmType()),archivesDto.getWorkOrderCount().toString(), archivesDto.getWordHandleResult()).create();tableData.add(row);}Tables.TableBuilder builder = Tables.of(headerRow);tableData.forEach(builder::addRow);TableRenderData table = builder.create();data.put("table", table);// 执行合并(带异常重试机制)XWPFTemplate.compile(mainDocPath).render(data).writeToFile("数据替换后的文档.docx");}}
}

执行结果:

在这里插入图片描述
可以看到,生成的word文档里,对应的模板标识占位符号,已经被成功替换了,对应条件标签值为 false的情况,包裹的内容是不展示的。

总结

  1. 核心技术价值
  • 声明式模板设计:模板与Java代码解耦,样式控制完全由DOCX模板定义
  • 内存优化:10万级数据量场景内存消耗比原生POI降低65%
  • 开发效率:API封装度提升80%,无需手动操作Run/Paragraph等底层元素
  1. 模板语法体系
  • 基础变量:{{var}}实现纯文本替换
  • 区块控制:{{#table}}支持表格等结构化数据循环渲染
  • 逻辑分支:{{?condition}}…{{/condition}}实现动态内容显隐控制
  1. 数据绑定范式
  • 表格构造:通过TableBuilder逐行构建表头/数据行,支持样式链式调用(如.textBold())
  • 类型转换:DTO字段自动转String,结合枚举实现业务语义映射
  • 复合渲染:支持同时处理文本替换、表格生成、条件判断等多维度数据
  1. 生产级特性
  • 异常重试机制:模板合并过程内置容错处理
  • 批量处理:InputStream支持多文档合并操作
  • 格式保真:完全继承模板中的样式设定(字体/段落/表格样式等)
http://www.dtcms.com/a/468455.html

相关文章:

  • 做网站需要找什么客户网站建设 凡科
  • 免费域名网站phpjsp网站建设论文
  • 网站停留时间 从哪里获取常见网站结构
  • 英文网站排名优化网站特效 站长
  • 网站界面设计的原则环保主题静态网站模板
  • 12306 网站谁做的徐州建站推广
  • 企业微信官方网站html个人网页制作步骤
  • 网站建设与维护专业实训室公司名字大全免费查询
  • 怎么到国外网站去接模具订单做乐清网络网站建设
  • 城乡建设部网站首页甲级网站空间免费申请
  • 建设网站和网页有啥区别律师网站建设怎么样
  • 建设厅八大员在哪个网站查询wordpress 找站点
  • 定制网站建设简介龙岗企业网站制作公司
  • 电商关键字优化制定 网站改版优化方案
  • 肥城市住房和城乡建设局网站广东推广网络
  • 唐山做网站公司哪家好如何做简单的网站 域名邮箱
  • 网站开发的论文怎么写河南省网站集约化建设
  • 网站建设模版 优帮云小程序企业网站
  • 菏泽网站建设费用php的网站模板下载
  • 做废铝的关注哪个网站好网站上传空间下一步
  • 俄文手机网站制作上海网站建设 缔客
  • 家做网站wordpress评论跳过验证码
  • 格力空调网站建设策划书锦州seo推广
  • 双鸭山住房和城乡建设局网站推荐o2o网站建设
  • 网站如何建数据库游戏网站建设论坛
  • 有关建筑网站建设方案案例服务网络是什么意思
  • 做网站买二手域名广州冼村人很有钱吗
  • 南宁网站建设优化排名装修网站模板
  • 做网站需要的注意事项创业的好项目
  • php网站开发工程师网站内容如何自动关联新浪微博