POI Word设置背景色(以不同颜色突出显示文本)和底纹

1、pom.xml

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml-schemas</artifactId>
    <version>4.1.2</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.4</version>
</dependency>
<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.13</version>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-compress</artifactId>
    <version>1.19</version>
</dependency>
<dependency>
    <groupId>org.apache.xmlbeans</groupId>
    <artifactId>xmlbeans</artifactId>
    <version>3.1.0</version>
</dependency>

 

2、设置背景色(以不同颜色突出显示文本)

package test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTShd;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STHighlightColor;

public class Test2 {

	public static void main(String[] args) {
		XWPFDocument document = new XWPFDocument();
		FileOutputStream fos = null;
		try {
			fos = new FileOutputStream(new File("I:\\test.docx"));
			//段落
			XWPFParagraph paragraph = document.createParagraph();
			//具有相同属性的一个区域。  
			XWPFRun run = paragraph.createRun();
			run.setBold(true); //加粗
			run.setText("测试");
			run.setColor("FF0000");
			run = paragraph.createRun();
			run.setText("背景色");
			run.getCTR().addNewRPr().addNewHighlight().setVal(STHighlightColor.YELLOW);
			run = paragraph.createRun();
			CTShd shd = run.getCTR().addNewRPr().addNewShd();
			shd.setFill("FFFF00");
			run.setText("底纹");
			document.write(fos);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (fos != null) {
				try {
					fos.close();
					document.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

3、16种背景色获取

	/**
	 * 17 种标准色是 aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, orange, purple, red, silver, teal, white, yellow。
	 * @param color
	 * @return
	 * @date 2020年4月7日 下午7:16:39
	 */
	private static Enum getBackground(String color) {
		color = color.replaceAll("\\s+", "");
		if ("yellow".equals(color) || "rgb(255,255,0)".equals(color) || "#FFFF00".equals(color)) {
			return STHighlightColor.YELLOW;//1-黄色
		} else if ("lime".equals(color) || "rgb(0,255,0)".equals(color) || "#00FF00".equals(color)) {
			return STHighlightColor.GREEN;//2-绿色
		} else if ("aqua".equals(color) || "rgb(0,255,255)".equals(color) || "#00FFFF".equals(color)) {
			return STHighlightColor.CYAN;//3-青色
		} else if ("fuchsia".equals(color) || "rgb(255,0,255)".equals(color) || "#FF00FF".equals(color)) {
			return STHighlightColor.MAGENTA;//4-粉红色
		} else if ("blue".equals(color) || "rgb(0,0,255)".equals(color) || "#0000FF".equals(color)) {
			return STHighlightColor.BLUE;//5-蓝色
		} else if ("red".equals(color) || "rgb(255,0,0)".equals(color) || "#FF0000".equals(color)) {
			return STHighlightColor.RED;//6-红色
		} else if ("navy".equals(color) || "rgb(0,0,128)".equals(color) || "#000080".equals(color)) {
			return STHighlightColor.DARK_BLUE;//7-深蓝色
		} else if ("teal".equals(color) || "rgb(0,128,128)".equals(color) || "#008080".equals(color)) {
			return STHighlightColor.DARK_CYAN;//8-深青色
		} else if ("green".equals(color) || "rgb(0,128,0)".equals(color) || "#008000".equals(color)) {
			return STHighlightColor.DARK_GREEN;//9-深绿色
		} else if ("purple".equals(color) || "rgb(128,0,128)".equals(color) || "#800080".equals(color)) {
			return STHighlightColor.DARK_MAGENTA;//10-深粉红色,紫色
		} else if ("maroon".equals(color) || "rgb(128,0,0)".equals(color) || "#800000".equals(color)) {
			return STHighlightColor.DARK_RED;//11-深红色
		} else if ("olive".equals(color) || "rgb(128,128,0)".equals(color) || "#808000".equals(color)) {
			return STHighlightColor.DARK_YELLOW;//12-深黄色
		} else if ("gray".equals(color) || "rgb(128,128,128)".equals(color) || "#808080".equals(color)) {
			return STHighlightColor.DARK_GRAY;//13-深灰色
		} else if ("silver".equals(color) || "rgb(192,192,192)".equals(color) || "#C0C0C0".equals(color)) {
			return STHighlightColor.LIGHT_GRAY;//14-浅灰色
		} else if ("black".equals(color) || "rgb(0,0,0)".equals(color) || "#000000".equals(color)) {
			return STHighlightColor.BLACK;//15-黑色
		} else {
			return STHighlightColor.NONE;//无色
		}
	}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值