JAVA生成Word文档
第一步:导入依赖
<!--生成word文档-->
<dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.10.3</version>
</dependency>
<!--数字转为汉字大写-->
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId>
</dependency>
第二步:业务代码
@Overridepublic void downloadEngineeringWord(HttpServletResponse response, Long engineeringId) {String engineeringWordSql = "你的查询sql";Map<String, Object> tendersWord = (Map<String, Object>) SqlUtil.getMapToList(engineeringWordSql, entityManager).get(0);if (ObjectUtils.isEmpty(tendersWord)) {return;}//判断文本是否出现if (tendersWord.containsKey("margin") && !ObjectUtils.isEmpty(tendersWord.get("margin"))) {BigDecimal price = (BigDecimal) tendersWord.get("margin");tendersWord.put("marginShow", price.signum() > 0);} else {tendersWord.put("marginShow", false);}//将数字金额转为汉字大写if (tendersWord.containsKey("maxPrice") && !ObjectUtils.isEmpty(tendersWord.get("maxPrice"))) {double money = Double.parseDouble(tendersWord.get("maxPrice").toString());String chineseMoney = NumberChineseFormatter.format(money, true, true);tendersWord.put("highestPrice", chineseMoney);}//对前端使用\n换行的段落文本进行格式化换行Object qualifications = tendersWord.get("qualifications");if (!ObjectUtils.isEmpty(qualifications) && qualifications.toString().contains("/")) {List<String> qualificationsList = Arrays.asList(qualifications.toString().split("/"));List<Map<String, Object>> qualificationMapList = new ArrayList<>();qualificationsList.stream().filter(f -> !ObjectUtils.isEmpty(f.trim())).forEach(qualification -> {Map<String, Object> itemMap = new HashMap<>();itemMap.put("qualification", qualification);qualificationMapList.add(itemMap);});tendersWord.put("qualifications", qualificationMapList);}String fileName = "工程文件";try {File wordTemplate = new File("start/src/main/resources/" + fileName + ".docx");XWPFTemplate template = XWPFTemplate.compile(wordTemplate.getAbsolutePath()).render(tendersWord);response.setCharacterEncoding("UTF-8");response.setContentType("multipart/form-data");response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName + ".docx", "utf-8"));response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");OutputStream out = response.getOutputStream();BufferedOutputStream bos = new BufferedOutputStream(out);template.write(bos);bos.flush();out.flush();PoitlIOUtils.closeQuietlyMulti(template, bos, out);} catch (IOException e) {throw new BizException(fileName + ".docx 生成失败,请稍后再试!");}}
官网链接:Poi-tl Documentation
相关文章:
JAVA生成Word文档
第一步:导入依赖 <!--生成word文档--> <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.10.3</version> </dependency> <!--数字转为汉字大写--> <depend…...
python将.db数据库文件转成Excel文档
python实现.db数据库转Excel 程序实现 上一篇文章程序实现以下功能: 1.读取一个Excel文件,文件名通过函数传参数传入 2.将文件读取的内容保存到一个数据库文件中 3.数据库的文件名以传入的Excel文件的文件名命名 4.将excel文件的工作簿的名字作为数据库的表单名 5…...
[opencvsharp]C#基于Fast算法实现角点检测
角点检测算法有很多,比如Harris角点检测、Shi-Tomas算法、sift算法、SURF算法、ORB算法、BRIEF算法、Fast算法等,今天我们使用C#的opencvsharp库实现Fast角点检测 【算法介绍】 fast算法 Fast(全称Features from accelerated segment test)是一种用于角…...
群晖NAS开启FTP服务结合内网穿透实现公网远程访问本地服务
⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 文章目录 ⛳️ 推荐1. 群晖安装Cpolar2. 创建FTP公网地址3. 开启群晖FTP服务4. 群晖FTP远程连接5. 固定FTP公网地址6. 固定FTP…...
ReactNative实现弧形拖动条
我们直接看效果 先看下面的使用代码 <CircularSlider5step{2}min{0}max{100}radius{100}value{30}onComplete{(changeValue: number) > this.handleEmailSbp(changeValue)}onChange{(changeValue: number) > this.handleEmailDpd(changeValue)}contentContainerStyle{…...
STM32F407移植OpenHarmony笔记9
继上一篇笔记,已经完成liteos内核的基本功能适配。 今天尝试启动OHOS和XTS兼容性测试。 如何启动OHOS? OHOS系统初始化接口是OHOS_SystemInit(void),在内核初始化完成后,就能调用。 extern void OHOS_SystemInit(void); OHOS_Sys…...
telnet笔记
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、场景二、介绍1.测试端口2.访问百度3. 简单的爬虫 前言 最近telnet命令用的比较多,所以记录一下。 一、场景 ping应该是大家最常用的命令&…...
【考研408】操作系统笔记
文章目录 [toc] 计算机系统概述操作系统的基本概念操作系统的概念和特征操作系统的目标和功能(**处理器管理、存储器管理、设备管理、文件管理、向用户提供接口、扩充机器**) 操作系统的发展与分类操作系统的运行环境操作系统的运行机制 操作系统的体系结…...
从0开始搭建、上传npm包
从0开始搭建、上传npm包 1、上传一个简单获取水果价格的包创建 vite 项目在项目根目录 src 文件夹中创建 index.ts 文件,文件内容如下:在 main.ts 文件中导入、导出上面创建的方法创建 vite.config.ts 配置文件,文件内容如下配置 package.jso…...
【Go】在 JSON 中解析 time.Duration
当解析 JSON 时,使用time.Duration可能是一个繁琐的过程,因为它需要在一秒的后面添加 9 个零(即 1000000000)。为了简化这个过程,我创建了一个名为 Duration 的新类型: type Duration time.Duration为了将…...
UE4 C++ UGameInstance实例化
1.创建GameInstance C类 2.在.h添加变量 class 工程名称_API UMyGameInstance : public UGameInstance {GENERATED_BODY()public: //定义了三个公开的变量UMyGameInstance();UPROPERTY(EditAnywhere, BlueprintReadWrite, Category "MyGameInstance")FString Name…...
在工业制造方面,如何更好地实现数字化转型?
实现工业制造的数字化转型涉及利用数字技术来增强流程、提高效率并推动创新。以下是工业制造领域更好实现数字化转型的几个关键步骤: 1.定义明确的目标: 清楚地概述您的数字化转型目标。确定需要改进的领域,例如运营效率、产品质量或供应链…...
【MySQL】-10 MySQL 存储过程
MySQL 存储过程 优点缺点一、存储过程的创建和调用创建存储过程实例1、in 输入参数2、out输出参数3、inout输入参数 三、变量1. 变量定义2. 变量赋值3. 用户变量 四、注释MySQL存储过程的调用MySQL存储过程的查询MySQL存储过程的修改MySQL存储过程的删除MySQL存储过程的控制语句…...
3.闭包 - JS
作用域 一般认为 JS 中作用域有三种: 全局作用域:一个脚本运行代码的默认作用域;模块作用域:一个模块运行代码的默认作用域;函数作用域:一个函数运行代码的默认作用域。 而由于 let/const 声明变量的作用…...
Java实现批量视频抽帧2.0
继上个版本 对其进行略微升级 🤓 上个版本仅对一个视频进行抽帧处理 此版本可对一个文件夹内的全部视频进行抽帧并对应的文件夹进行帧图片的保存 1️⃣配置pom.xml (保持上次不变) <dependencies><dependency><grou…...
MFC 原生LsitCtrl单元格嵌入图标
// ListItemInsertIconDlg.h: 头文件 //#pragma once// CListItemInsertIconDlg 对话框 class CListItemInsertIconDlg : public CDialogEx { // 构造 public:CListItemInsertIconDlg(CWnd* pParent nullptr); // 标准构造函数// 对话框数据 #ifdef AFX_DESIGN_TIMEenum { IDD…...
黑马头条 - minio
我是南城余!阿里云开发者平台专家博士证书获得者! 欢迎关注我的博客!一同成长! 一名从事运维开发的worker,记录分享学习。 专注于AI,运维开发,windows Linux 系统领域的分享! 知…...
认识Tomcat (一)
认识Tomcat (一) 一、服务器 1.1 服务器简介 硬件服务器的构成与一般的PC比较相似,但是服务器在稳定性、安全性、性能等方面都要求更高,因为CPU、芯片组、内存、磁盘系统、网络等硬件和普通PC有所不同。 软件服务器&…...
SSH免密切换服务器案例-ssh协议(公钥和私钥)
公钥和私钥理解 公钥提供加密,私钥解密,公钥可以共享,私钥不可以。举例公钥相当于锁头,可以给别人用,钥匙相当于私钥,只能开自己发出去的锁头,也就是私钥和公钥成对,私钥只能解密对…...
AMH面板如何安装与公网远程访问本地面板界面
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
Unity资源提取工具AssetStudio完全指南:从问题解决到专业应用
Unity资源提取工具AssetStudio完全指南:从问题解决到专业应用 【免费下载链接】AssetStudio AssetStudio - Based on the archived Perfares AssetStudio, I continue Perfares work to keep AssetStudio up-to-date, with support for new Unity versions and addi…...
2025届毕业生推荐的六大AI辅助论文平台解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 它可以助力进行文献梳理,帮助研究者快速筛选出有价值的文献资料,人工…...
Nginx-UI 备份恢复漏洞 PoC 公开:攻击者可篡改加密备份并注入恶意配置
漏洞概述Nginx-UI 备份恢复机制中被披露存在一个高危安全漏洞(CVE-2026-33026)。该漏洞允许威胁攻击者在恢复过程中篡改加密备份文件并注入恶意配置。随着公开的 PoC 利用代码发布,未打补丁的系统面临被完全攻陷的即时风险。加密缺陷利用原理…...
WooCommerce 的 SEO 优化技巧有哪些_WooCommerce 的结账流程如何设置
WooCommerce 的 SEO 优化技巧有哪些 在当今电子商务领域,WooCommerce 作为一个功能强大的 WordPress 插件,被广泛用于搭建电子商店。一个功能强大的平台也需要优化,特别是 SEO 优化。SEO(Search Engine Optimization,…...
Zotero Better Notes终极指南:如何在笔记中创建流程图和思维导图
Zotero Better Notes终极指南:如何在笔记中创建流程图和思维导图 【免费下载链接】zotero-better-notes Everything about note management. All in Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-better-notes Zotero Better Notes是一款功能…...
如何解决Cats类型推导难题:SI-2712修复与部分统一完整指南
如何解决Cats类型推导难题:SI-2712修复与部分统一完整指南 【免费下载链接】cats Lightweight, modular, and extensible library for functional programming. 项目地址: https://gitcode.com/gh_mirrors/ca/cats Cats是一个轻量级、模块化且可扩展的函数式…...
Bili2text:重构B站视频内容提取流程的智能解决方案
Bili2text:重构B站视频内容提取流程的智能解决方案 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 在信息爆炸的视频时代,教育工作者、…...
卷积神经网络(CNN)原理可视化解释:Phi-4-mini-reasoning担任AI讲师
卷积神经网络(CNN)原理可视化解释:Phi-4-mini-reasoning担任AI讲师 1. 当AI成为你的机器学习导师 想象一下,有位从不疲倦的讲师,能用最生动的比喻解释复杂的算法原理,还能实时生成配套示意图——这就是Ph…...
Vertex AI 漏洞暴露谷歌云数据和非公开制品
聚焦源代码安全,网罗国内外最新资讯!编译:代码卫士网络安全研究人员披露称谷歌云 Vertex AI 平台中存在一个安全“盲点”,可使攻击者将人工智能代理武器化,从而未经授权访问敏感数据并危及组织机构的云环境安全。Palo …...
Pixel Couplet Gen快速部署:微信小程序端调用像素春联API的跨域与性能优化
Pixel Couplet Gen快速部署:微信小程序端调用像素春联API的跨域与性能优化 1. 项目背景与核心价值 Pixel Couplet Gen是一款基于ModelScope大模型驱动的创新春联生成器,将传统春节文化与现代像素艺术完美融合。不同于传统春联生成工具,该项…...
