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

Java的XWPFTemplate word生成列表

Java的XWPFTemplate工具类导出word.docx的使用_xwpftemplate 语法_youmdt的博客-CSDN博客

如果是表格的列表参考上面这篇文章即可,比较复杂的列表遍历暂时还没找到方法,只能手动创建表格了

上面是模板,非常简单,以为我们是要自己创建表格

先看结果吧

自己写的表格基本就是这样,后面加上换行和宽度高度调节即可。

下面的代码是最基本的,所以也就没加高度换行等调节。有时候再补充上去。

下面的代码比较凌乱,还没开发完成,想整合成一个通用的接口,现在只做了日志的,把没有用的内容删掉即可。凑合着看。

/*** 安全日志通用导出word*/@Overridepublic void exportWord(AqscSecurityLog aqscSecurityLog, HttpServletResponse response) throws IOException {String filePath = "";String filename = "";String params1 = aqscSecurityLog.getParams1();if (Objects.equals(params1, "1")) { //日报filePath = "/word/day.docx";filename = "安全日志.docx";} else if (Objects.equals(params1, "2")) { //周报filePath = "/word/day.docx";filename = "安全周报.docx";} else if (Objects.equals(params1, "3")) { //月报filePath = "/word/day.docx";filename = "安全月报.docx";} else if (Objects.equals(params1, "4")) { //季报filePath = "/word/day.docx";filename = "安全季报.docx";} else {throw new ServiceException("params1不等于1234,请联系管理员!");}InputStream inputStream = getServiceFile(filePath);XWPFTemplate document = XWPFTemplate.compile(inputStream);Map<String, Object> data = new HashMap<>();List<String> ids = aqscSecurityLog.getIds();List<AqscSecurityLog> logs = aqscSecurityLogMapper.selectAqscSecurityLogsByids(ids);//日志if (Objects.equals(params1, "1")) {processingDayData(logs, data, document);}document.render(data);exportWordAfter(document, response, filename);}//处理日志数据private void processingDayData(List<AqscSecurityLog> logs, Map<String, Object> data, XWPFTemplate document) {data.put("companyName", logs.get(0).getCompanyName());data.put("name", logs.get(0).getFillePerson());XWPFTable table2 = document.getXWPFDocument().createTable(1, 2);table2.getRow(0).getCell(0).setText("日 期");table2.getRow(0).getCell(1).setText("工作内容");table2.getRow(0).getCell(0).setWidth("30%");table2.getRow(0).getCell(1).setWidth("68%");logs.forEach(it -> {XWPFTable table = document.getXWPFDocument().createTable(3, 2);// 合并左边的三行for (int i = 0; i < 3; i++) {XWPFTableCell cell = table.getRow(i).getCell(0);if (i == 0) {cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);} else {cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);}}// 向表格中插入数据if (it.getWeather() != null) { //日期 (星期) (天气)table.getRow(0).getCell(0).setText(it.getStringTime() + "(" + it.getWeek() + ")" + it.getWeather());} else {table.getRow(0).getCell(0).setText(it.getStringTime() + "(" + it.getWeek() + ")");}table.getRow(0).getCell(1).setText(it.getContent());table.getRow(1).getCell(1).setText(it.getExperienceAndExperience());table.getRow(2).getCell(1).setText(it.getOtherRecords());table.getRow(0).getCell(0).setWidth("30%");table.getRow(0).getCell(1).setWidth("68%");});}public void exportWordAfter(XWPFTemplate workbook, HttpServletResponse response, String filename) {filename = URLEncodeUtil.encode(filename);response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.documentz");//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码response.setHeader("Content-Disposition", "attachment;filename=" + filename);response.setHeader("filename", filename);Assert.isTrue(!ObjectUtils.isEmpty(workbook), "导出遇到了问题,请联系管理员");try (ServletOutputStream out = response.getOutputStream()) {workbook.write(out);workbook.close();} catch (Exception e) {throw new RuntimeException(e);}}

如果是返回到浏览器,前端也得配置一下,可以参考下面这篇文章配置

java-excel、word、zip返回前端-CSDN博客

相关文章:

Java的XWPFTemplate word生成列表

Java的XWPFTemplate工具类导出word.docx的使用_xwpftemplate 语法_youmdt的博客-CSDN博客 如果是表格的列表参考上面这篇文章即可&#xff0c;比较复杂的列表遍历暂时还没找到方法&#xff0c;只能手动创建表格了 上面是模板&#xff0c;非常简单&#xff0c;以为我们是要自己创…...

基于RFID的自动化仓储设备研发项目可行性研究报告

一、项目概况 基于RFID的自动化仓储设备研发项目&#xff0c;是深圳市飞鸟国际供应链股份有限公司在公司有色金属供应链一站式服务的基础上&#xff0c;针对有色金属供应链的仓储环节进行的研发。 多年来&#xff0c;公司一直坚持以“科技金融”为核心的未来发展战略&#xf…...

ajax异步传值以及后端接收参数的几种方式

异步传值 第一种呢&#xff0c;也是最简单的一种&#xff0c;通过get提交方式&#xff0c;将参数在链接中以问号的形式进行传递 // 前台传值方法 // 触发该方法调用ajaxfunction testAjax(yourData) {$.ajax({type: "get", // 以get方式发起请求url: "/yo…...

千年TGS服务器日志报错如何解决

大家在修改sdb文件&#xff0c;建议使用sdb修改器。注意&#xff1a;每个文件&#xff0c;每个逗号都很重要&#xff1b;只要其中哪部分少一个逗号或多一个逗号&#xff0c;都很容易发生错误。 一常见 TGS1000.LOG 错误类型&#xff0c;因不同的错误&#xff0c;错误中括号“&…...

读取Json BugFix

遇到的错误如下所示&#xff1a; 遇到的错误如下所示&#xff1a;File ~/miniconda3/lib/python3.9/json/decoder.py:353, in JSONDecoder.raw_decode(self, s, idx)344 """Decode a JSON document from s (a str beginning with345 a JSON document) and retu…...

【Gradle构件工具深度学习】

Gradle构件工具深度学习 1. 课程大纲1.1 Gradle入门1.2 与Idea整合1.3 Gradle进阶 2. 常见项目构建工具3. 安装gradle 1. 课程大纲 1.1 Gradle入门 基本介绍、常用指令、项目目录、项目应用 1.2 与Idea整合 Groovy语法、整合IDEA、搭建web工程、项目部署 1.3 Gradle进阶 生命周…...

Attention Transformer

来源老师课件&#xff0c;方便以后复习。 课参考链接&#xff1a; http://jalammar.github.io/illustrated-transformer/ 之前的知识链接&#xff1a; 【知识链接】WGAN Transformer Vit Swin-Transformer Swin-Unet Res-Vit TransUNet MAE Bra ADDA 打分函数&#xff1a; 多头…...

[最新榜单] 智能手机数据恢复的 10 款最佳应用

当手机上的数据消失时&#xff0c;这让您感到非常难过。 由于事故而突然丢失重要的聊天记忆、照片和其他您想保留的东西的悲伤。 如果它没有被淹没&#xff0c;您可以使用数据恢复应用程序修复它。 在本文中&#xff0c;我们将解释一些有用的数据恢复应用程序。 数据恢复应用…...

修改CentOS默认mail发件名称

修改CentOS默认的邮件发件名称 要修改CentOS默认的邮件发件名称&#xff0c;可以按照以下步骤进行操作&#xff1a; 打开终端或SSH连接到CentOS服务器。使用root或具有管理员权限的用户登录。编辑postfix配置文件。在终端中输入以下命令&#xff1a; vi /etc/postfix/main.cf…...

Lesson 03 C/C++内存管理

C&#xff1a;渴望力量吗&#xff0c;少年&#xff1f; 文章目录 一、C内存管理方式1. new/delete操作内置类型2. new和delete操作自定义类型 二、operator new与operator delete函数三、new和delete的实现原理1. 内置类型2. 自定义类型 四、内存泄漏1. 什么是内存泄漏2. 内存泄…...

【SA8295P 源码分析】127 - 摄像头 GMSL1、GMSL2 加串-解串器 常用寄存器配置整理(正在更新中......)

【SA8295P 源码分析】127 - 摄像头 GMSL1、GMSL2 加串-解串器 常用寄存器配置整理 一、MAX96712 解串器基础配置1.1 配置链路 GMSL 协议 及 传输速率1.1.1 配置GMSL1、GMSL2协议 及 配置使能 Link A/B/C/D [0x6]:GMSL2_A、LINK_EN_A1.1.2 配置GMSL2 传输速率 3 Gbps / 6 Gbps …...

Docker与Kubernetes结合的难题与技术解决方案

文章目录 1. **版本兼容性**技术解决方案 2. **网络通信**技术解决方案 3. **存储卷的管理**技术解决方案 4. **安全性**技术解决方案 5. **监控和日志**技术解决方案 6. **扩展性与自动化**技术解决方案 7. **多集群管理**技术解决方案 结语 &#x1f388;个人主页&#xff1a…...

CVE-2021-42287CVE-2021-42278 域内提权

倘见玉皇先跪奏&#xff1a;他生永不落红尘 本文首发于先知社区&#xff0c;原创作者即是本人 前言 网络安全技术学习&#xff0c;承认⾃⼰的弱点不是丑事。只有对原理了然于⼼&#xff0c;才能突破更多的限制。拥有快速学习能力的白帽子&#xff0c;是不能有短板的&#xf…...

springcloud整合nacos实现服务注册

Nacos是一个开源的分布式系统服务和基础设施解决方案&#xff0c;用于实现动态服务发现、配置管理和服务治理。它可以帮助开发人员和运维团队更好地管理微服务架构中的服务实例、配置信息和服务调用。 Nacos提供了服务注册与发现、动态配置管理、服务路由和负载均衡等功能&…...

redis实现布隆过滤器

思路&#xff1a; 用于快速检查一个元素是否属于某个集合中。它可以快速判断一个元素是否在一个大型集合中&#xff0c;且判断速度很快且不占用太 多内存空间。原理是使用一组哈希函数&#xff0c;将元素【映射】成数组中的【索引位置】&#xff0c;就是将元素转成他在索引中的…...

山西电力市场日前价格预测【2023-11-19】

1.日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-11-19&#xff09;山西电力市场全天平均日前电价为591.63元/MWh。其中&#xff0c;最高日前电价为1500.00元/MWh&#xff0c;预计出现在16:45~20:45。最低日前电价为268.57元/MWh&#x…...

深眸科技革新升级OCR技术,与AI视觉实现有效融合赋能各行业应用

OCR即光学字符识别&#xff0c;是通过扫描仪或工业相机等电子设备检查打印的字符&#xff0c;并通过检测暗、亮的模式确定其形状&#xff0c;然后用字符识别方法将形状翻译成计算机文字的过程。 目前&#xff0c;随着机器视觉和人工智能技术的进一步升级&#xff0c;OCR技术实…...

性能测试知多少---系统架构分析

之前有对性能需求进行过分析&#xff0c;那篇主要从项目业务、背景等角度如何抽丝剥茧的将项目的需求抽离出来。在我们进行需求的时候也需要对被测项目的架构有一定的认识&#xff0c;如果不了解被测系统的架构&#xff0c;那么在后期的性能分析与调优阶段将无从下手。 简单系…...

【观察】华为:数智世界“一触即达”,应对数智化转型“千变万化”

毫无疑问&#xff0c;数智化既是这个时代前进所趋&#xff0c;也是国家战略所指&#xff0c;更是所有企业未来发展进程中达成的高度共识。 但也要看到&#xff0c;由于大量新兴技术的出现&#xff0c;技术热点不停的轮转&#xff0c;加上市场环境的快速变化&#xff0c;让数智化…...

我的 2023 秋招总结,拿到了大厂offer

2023秋招小结 前言 & 介绍 作为2024年毕业的学生&#xff0c;在2023年也就是今年秋招。 现在秋招快结束了&#xff0c;人生可能没有几次秋招的机会&#xff08;应该就一次&#xff0c;最多两次吧哈哈&#xff09;&#xff0c;也有一点感悟&#xff0c;所以小小总结一下。…...

飞凌T507核心板开发实战:开机LOGO、电阻屏校准与双屏异显配置详解

1. 项目概述与核心板简介最近在做一个车载信息娱乐终端的项目&#xff0c;硬件平台选用了飞凌嵌入式的FETT507-C核心板。这块板子基于全志T507这颗四核车规级处理器&#xff0c;Cortex-A53架构&#xff0c;主频1.5GHz&#xff0c;集成了G31 GPU&#xff0c;标配2GB DDR3L内存和…...

如何处理SQL递归层次结构更新_通过触发器维护父子关系

UPDATE父子路径未更新的主因是触发器中仅修改NEW.path而未递归更新后代path&#xff0c;且AFTER触发器中直接UPDATE同表会报错&#xff0c;需用临时表或存储过程中转&#xff0c;并同步维护level等衍生字段。UPDATE 时父子路径没更新&#xff0c;触发器里忘改 NEW.path递归结构…...

紫光Pango EDA工具链实战:从License申请到Synplify避坑,一个FPGA工程师的踩坑笔记

紫光Pango EDA工具链实战&#xff1a;从License申请到Synplify避坑指南 第一次接触紫光Pango工具链时&#xff0c;我像大多数FPGA工程师一样&#xff0c;以为这不过是又一个需要熟悉的开发环境。直到在项目deadline前三天&#xff0c;Synplify突然报出"exit code 4"错…...

四步法快速诊断与修复AKShare金融数据接口的数据异常问题

四步法快速诊断与修复AKShare金融数据接口的数据异常问题 【免费下载链接】aktools AKTools is an elegant and simple HTTP API library for AKShare, built for AKSharers! 项目地址: https://gitcode.com/gh_mirrors/ak/aktools 作为量化投资领域的重要工具&#xff…...

从NCDC到本地分析:一站式获取与处理全球气象站点数据

1. 全球气象数据获取的完整指南 第一次接触气象数据的朋友可能会被各种专业术语和数据格式搞得晕头转向。我刚开始做气象分析时&#xff0c;光是找数据就花了两周时间&#xff0c;下载下来的文件还经常打不开。今天我就把从数据获取到最终分析的完整流程梳理出来&#xff0c;帮…...

WebGL入门:Three.js高级材质与光照

WebGL入门&#xff1a;Three.js高级材质与光照 大家好&#xff0c;我是欧阳瑞&#xff08;Rich Own&#xff09;。今天想和大家聊聊WebGL和Three.js的高级特性。作为一个全栈开发者和极客玩家&#xff0c;我对3D可视化有着浓厚的兴趣。今天就来分享一下Three.js中的高级材质和光…...

Boss-Key终极指南:一键隐藏窗口,打造高效安全的办公环境

Boss-Key终极指南&#xff1a;一键隐藏窗口&#xff0c;打造高效安全的办公环境 【免费下载链接】Boss-Key 老板来了&#xff1f;快用Boss-Key老板键一键隐藏静音当前窗口&#xff01;上班摸鱼必备神器 项目地址: https://gitcode.com/gh_mirrors/bo/Boss-Key 在数字化办…...

在vscode中快速配置taotoken的claude code插件实现稳定编程助手

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在VSCode中快速配置Taotoken的Claude Code插件实现稳定编程助手 对于使用VSCode的开发者而言&#xff0c;Claude Code插件是一个强…...

ARIS:基于技能化工作流的AI自主研究系统设计与实践

1. 项目概述&#xff1a;ARIS&#xff0c;一个让AI在你睡觉时做研究的自主工作流 如果你是一名机器学习或计算机科学领域的研究者&#xff0c;我猜你肯定有过这样的体验&#xff1a;一个绝妙的想法在深夜闪现&#xff0c;你兴奋地爬起来记下几行潦草的笔记&#xff0c;然后第二…...

Aseprite插件AseIcoExport:一键生成Windows与macOS应用图标

1. 项目概述&#xff1a;一个被低估的图标导出工具如果你是一个独立开发者&#xff0c;或者在一个小团队里负责UI/UX设计到前端实现的完整链路&#xff0c;那你一定对“图标导出”这个环节又爱又恨。爱的是&#xff0c;一个精心设计的图标集能让产品界面瞬间提升质感&#xff1…...