java导出word文件(手绘)

news/2024/11/13 13:50:49/

文章目录

    • 代码细节
    • 效果图
    • 参考资料

代码细节

使用的hutool的WordUtil,WordUtil对poi进行封装,但是这一块的官方封装的很少,很多细节都没有。代码中是常见的绘制段落,标题、表格等常用api

 Word07Writer writer = WordUtil.getWriter();// 添加段落(标题)word">DateTime word">dateTime = DateUtil.parseDate(word">month + "-01");String format = DateUtil.format(word">dateTime, "yyyy年M月");writer.addText(ParagraphAlignment.CENTER, new Font("方正小标宋简体", Font.BOLD, 15), StrUtil.format("{}{}抽蓄电站运行月报", format, stName));//添加正文writer.addText(ParagraphAlignment.word">LEFT, new Font("宋体", Font.BOLD, 10), "一、综合运行数据");List<Entity> word">table = new ArrayList<>();word">for (word">int i = 0; i < itemList.size(); i++) {Entity entity = Entity.word">create();entity.word">set("指标", itemList.get(i));entity.word">set("单位", unit.get(i));switch (i) {word">case 0:entity.word">set("数值", result.getStr("机端发电量"));word">break;word">case 1:entity.word">set("数值", result.getStr("机端抽水电量"));word">break;word">case 2:entity.word">set("数值", result.getStr("发电次数"));word">break;word">default:entity.word">set("数值", result.getStr(itemList.get(i)));}entity.word">set("备注", beizhuList.get(i));word">table.word">add(entity);}XWPFTable xwpfTable = TableUtil.createTable(writer.getDoc(), word">table);// 遍历所有行word">for (XWPFTableRow word">row : xwpfTable.getRows()) {word">row.setHeight(500);word">row.setCantSplitRow(true);// 遍历行中的所有单元格word">for (XWPFTableCell cell : word">row.getTableCells()) {cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);//垂直居中//设置宽度cell.getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(100 * 25)); // 100磅转换为EMUsCTTc cttc = cell.getCTTc();CTP ctp = cttc.getPList().get(0);CTPPr ctppr = ctp.getPPr();word">if (ctppr == null) {ctppr = ctp.addNewPPr();}CTJc ctjc = ctppr.getJc();word">if (ctjc == null) {ctjc = ctppr.addNewJc();}ctjc.setVal(STJc.CENTER); //水平居中}}

效果图

效果还是很不错的,相关打码了

在这里插入图片描述

参考资料

  • hutool
  • 博客园

http://www.ppmy.cn/news/1546200.html

相关文章

Redis中的线程模型

Redis 的单线程模型详解 Redis 的“单线程”模型主要指的是其 主线程&#xff0c;这个主线程负责从客户端接收请求、解析命令、处理数据和返回响应。为了深入了解 Redis 单线程的具体工作流程&#xff0c;我们可以将其分为以下几个步骤&#xff1a; 接收客户端请求 Redis 的主线…

使用 wxPython 开发 Python 桌面应用程序的完整教程

使用 wxPython 开发 Python 桌面应用程序的完整教程 引言 在当今的软件开发领域&#xff0c;桌面应用程序仍然占据着重要的位置。Python 作为一种灵活且易于学习的编程语言&#xff0c;结合 wxPython 库&#xff0c;可以快速构建跨平台的桌面应用程序。本文将深入探讨 wxPyth…

海康私有化视频平台EasyCVR视频分析设备平台流媒体协议RTMP、HTTP-FLV、HLS的简单对比

在当今的数字化世界中&#xff0c;视频流协议的选择对于确保流畅、高效的视频传输至关重要。随着互联网技术的快速发展&#xff0c;直播和视频点播服务已经成为人们日常生活中不可或缺的一部分。无论是安防监控、在线教育、远程会议还是娱乐直播&#xff0c;用户对于视频流的实…

【QT】海康视频及openCv抓拍正脸接口

本文是关于海康视频及openCv抓拍正脸接口调试&#xff1a;通过海康摄像头获取视频流&#xff0c;opencv转换成Mat类型对象&#xff0c;检测人脸对象是否存在。 海康和opencv库和头文件的添加如下&#xff1a; win32{INCLUDEPATH $$PWD\..\hikvision\includeLIBS -L$$PWD\..…

Debezium系列之:Debezium3版本增量快照和只读增量快照应用的变化

Debezium系列之:Debezium3版本增量快照和只读增量快照应用的变化 一、需求背景二、基于数据库信号表使用增量快照案例三、基于Kafka信号Topic使用增量快照案例四、只读增量快照案例五、增量快照技术总结增量快照相关知识请阅读博主下面系列文章: Debezium系列之:实现增量快照…

前端学习之ES6+

1.ES6是什么 ES6&#xff0c;全称是ECMAScript 6&#xff0c;是JavaScript语言的下一代标准&#xff0c;由ECMA国际组织在2015年6月正式发布。ES6也被称作ECMAScript 2015&#xff0c;从这个版本开始&#xff0c;ECMA组织决定每年发布一个新的ECMAScript版本&#xff0c;以使J…

Hive面试题-- 查询各类型专利 top10 申请人及专利申请数

在数据处理中&#xff0c;尤其是涉及到专利信息等复杂数据时&#xff0c;Hive 是一个强大的工具。本文将详细介绍如何使用 Hive 查询语句来获取各类型专利 top10 申请人以及他们对应的专利申请数&#xff0c;以下是基于给定的 t_patent_detail 表结构的分析和查询步骤。 建表语…

Spring Boot 3中基于纯MyBatis的CURD开发实例

项目整理目录结构&#xff1a; └── aiosms├── pom.xml└── src├── main│ ├── java│ │ └── com │ │ └── ivandu│ │ └── aiosms│ │ ├── Aiosms.java│ │ ├── controll…