From 6ef5f1c1fde28f2ac337063a667a7ad20ea85bc7 Mon Sep 17 00:00:00 2001 From: liyong Date: Wed, 26 Nov 2025 17:16:51 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9AWord=E7=94=9F=E6=88=90=E5=99=A8?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=AE=B5=E8=90=BD=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=AD=97=E4=BD=93=E9=A2=9C=E8=89=B2=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/poi/word/Word07Writer.java | 23 ++++++++++++++++--- .../cn/hutool/poi/word/WordWriterTest.java | 3 ++- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/hutool-poi/src/main/java/cn/hutool/poi/word/Word07Writer.java b/hutool-poi/src/main/java/cn/hutool/poi/word/Word07Writer.java index 046394cf8..cd4801f45 100644 --- a/hutool-poi/src/main/java/cn/hutool/poi/word/Word07Writer.java +++ b/hutool-poi/src/main/java/cn/hutool/poi/word/Word07Writer.java @@ -13,7 +13,7 @@ import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; -import java.awt.Font; +import java.awt.*; import java.io.Closeable; import java.io.File; import java.io.IOException; @@ -102,7 +102,19 @@ public class Word07Writer implements Closeable { * @return this */ public Word07Writer addText(Font font, String... texts) { - return addText(null, font, texts); + return addText(null, font, null, texts); + } + + /** + * 增加一个段落 + * + * @param font 字体信息{@link Font} + * @param color 字体颜色{@link Color} + * @param texts 段落中的文本,支持多个文本作为一个段落 + * @return this + */ + public Word07Writer addText(Font font, Color color, String... texts) { + return addText(null, font, color, texts); } /** @@ -110,10 +122,11 @@ public class Word07Writer implements Closeable { * * @param align 段落对齐方式{@link ParagraphAlignment} * @param font 字体信息{@link Font} + * @param color 字体颜色{@link Color} * @param texts 段落中的文本,支持多个文本作为一个段落 * @return this */ - public Word07Writer addText(ParagraphAlignment align, Font font, String... texts) { + public Word07Writer addText(ParagraphAlignment align, Font font, Color color, String... texts) { final XWPFParagraph p = this.doc.createParagraph(); if (null != align) { p.setAlignment(align); @@ -129,6 +142,10 @@ public class Word07Writer implements Closeable { run.setBold(font.isBold()); run.setItalic(font.isItalic()); } + if (null != color) { + String hexColor = String.format("%02X", color.getRGB()); + run.setColor(hexColor); + } } } return this; diff --git a/hutool-poi/src/test/java/cn/hutool/poi/word/WordWriterTest.java b/hutool-poi/src/test/java/cn/hutool/poi/word/WordWriterTest.java index 078e72a2c..e7d505c3e 100644 --- a/hutool-poi/src/test/java/cn/hutool/poi/word/WordWriterTest.java +++ b/hutool-poi/src/test/java/cn/hutool/poi/word/WordWriterTest.java @@ -8,7 +8,7 @@ import cn.hutool.core.lang.Console; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -import java.awt.Font; +import java.awt.*; import java.io.File; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -23,6 +23,7 @@ public class WordWriterTest { Word07Writer writer = new Word07Writer(); writer.addText(new Font("方正小标宋简体", Font.PLAIN, 22), "我是第一部分", "我是第二部分"); writer.addText(new Font("宋体", Font.PLAIN, 22), "我是正文第一部分", "我是正文第二部分"); + writer.addText(new Font("宋体", Font.PLAIN, 22), Color.RED, "我是正文第三部分", "我是正文第四部分"); writer.flush(FileUtil.file("e:/wordWrite.docx")); writer.close(); Console.log("OK");