`
53873039oycg
  • 浏览: 840177 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

[简单]POI设置word 2007文本下划线样式及文字底纹

    博客分类:
  • poi
 
阅读更多

         直接上代码

        

import java.io.FileOutputStream;
import java.math.BigInteger;
import java.util.Random;

import org.apache.poi.xwpf.usermodel.BreakType;
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.xwpf.usermodel.TextAlignment;
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.CTBackground;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHighlight;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHpsMeasure;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTShd;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSpacing;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTUnderline;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STHighlightColor;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STLineSpacingRule;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STShd;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STUnderline;

public class POI_07_设置下划线样式_S3_Test {
	public static void main(String[] args) throws Exception {
		POI_07_设置下划线样式_S3_Test t = new POI_07_设置下划线样式_S3_Test();
		XWPFDocument doc = new XWPFDocument();
		// 需关闭护眼色才能看到效果
		t.setDocumentbackground(doc, "FDE9D9");//设置页面背景色
		t.testSetUnderLineStyle(doc);//设置下划线样式以及突出显示文本
		t.addNewPage(doc, BreakType.PAGE);
		t.testSetShdStyle(doc);//设置文字底纹
		t.saveDocument(doc,
				"f:/saveFile/temp/sys_" + System.currentTimeMillis() + ".docx");
	}

	public void testSetUnderLineStyle(XWPFDocument doc) {
		String[] colors = new String[] { "CCA6EF", "DD999D", "4FCEF0",
				"7A7A7A", "F3C917", "FFA932", "C7B571", "535354", "5FD2F1",
				"B5E900", "FEF8B6" };
		Random random = new Random();
		// TODO 这里为了方便测试写了数字,推荐写英文样式
		for (int i = 1; i <= 18; i++) {
			XWPFParagraph p = doc.createParagraph();
			setParagraphFontInfoAndUnderLineStyle(p, "测试下划线", "宋体", "1D8C56",
					"22", false, false, false, true, i,
					colors[Math.abs(random.nextInt(colors.length))], false, 0,
					null);
			setParagraphSpacingInfo(p, true, "0", "50", false, "0", "0", true,
					"240", STLineSpacingRule.Enum.forString("auto"));
			setParagraphAlignInfo(p, ParagraphAlignment.LEFT,
					TextAlignment.CENTER);
		}
	}

	public void testSetShdStyle(XWPFDocument doc) {
		String[] colors = new String[] { "CCA6EF", "DD999D", "4FCEF0",
				"7A7A7A", "F3C917", "FFA932", "C7B571", "535354", "5FD2F1",
				"B5E900", "FEF8B6" };
		Random random = new Random();
		// TODO 这里为了方便测试写了数字,推荐写英文样式
		for (int i = 1; i <= 38; i++) {
			XWPFParagraph p = doc.createParagraph();
			setParagraphFontInfoAndUnderLineStyle(p, "测试底纹", "宋体", "1D8C56",
					"22", false, false, false, false, i, null, true, i,
					colors[Math.abs(random.nextInt(colors.length))]);
			setParagraphSpacingInfo(p, true, "0", "50", false, "0", "0", true,
					"240", STLineSpacingRule.Enum.forString("auto"));
			setParagraphAlignInfo(p, ParagraphAlignment.LEFT,
					TextAlignment.CENTER);
		}
	}

	public void setParagraphAlignInfo(XWPFParagraph p,
			ParagraphAlignment pAlign, TextAlignment valign) {
		p.setAlignment(pAlign);
		p.setVerticalAlignment(valign);
	}

	public void setParagraphSpacingInfo(XWPFParagraph p, boolean isSpace,
			String before, String after, boolean isPLine, String beforeLines,
			String afterLines, boolean isLine, String line,
			STLineSpacingRule.Enum lineValue) {
		CTPPr pPPr = null;
		if (p.getCTP() != null) {
			if (p.getCTP().getPPr() != null) {
				pPPr = p.getCTP().getPPr();
			} else {
				pPPr = p.getCTP().addNewPPr();
			}
		}
		CTSpacing pSpacing = pPPr.getSpacing() != null ? pPPr.getSpacing()
				: pPPr.addNewSpacing();
		if (isSpace) {
			// 段前磅数
			if (before != null) {
				pSpacing.setBefore(new BigInteger(before));
			}
			// 段后磅数
			if (after != null) {
				pSpacing.setAfter(new BigInteger(after));
			}
		}
		if (isPLine) {
			// 段前行数
			if (beforeLines != null) {
				pSpacing.setBeforeLines(new BigInteger(beforeLines));
			}
			// 段后行数
			if (afterLines != null) {
				pSpacing.setAfterLines(new BigInteger(afterLines));
			}
		}
		// 间距
		if (isLine) {
			if (line != null) {
				pSpacing.setLine(new BigInteger(line));
			}
			if (lineValue != null) {
				pSpacing.setLineRule(lineValue);
			}
		}
	}

	public void setParagraphFontInfoAndUnderLineStyle(XWPFParagraph p,
			String content, String fontFamily, String colorVal,
			String fontSize, boolean isBlod, boolean isItalic,
			boolean isStrike, boolean isUnderLine, int underLineStyle,
			String underLineColor, boolean isShd, int shdValue, String shdColor) {
		XWPFRun pRun = null;
		if (p.getRuns() != null && p.getRuns().size() > 0) {
			pRun = p.getRuns().get(0);
		} else {
			pRun = p.createRun();
		}
		pRun.setText(content);

		CTRPr pRpr = null;
		if (pRun.getCTR() != null) {
			pRpr = pRun.getCTR().getRPr();
			if (pRpr == null) {
				pRpr = pRun.getCTR().addNewRPr();
			}
		}

		// 设置字体
		CTFonts fonts = pRpr.isSetRFonts() ? pRpr.getRFonts() : pRpr
				.addNewRFonts();
		fonts.setAscii(fontFamily);
		fonts.setEastAsia(fontFamily);
		fonts.setHAnsi(fontFamily);

		// 设置字体大小
		CTHpsMeasure sz = pRpr.isSetSz() ? pRpr.getSz() : pRpr.addNewSz();
		sz.setVal(new BigInteger(fontSize));

		CTHpsMeasure szCs = pRpr.isSetSzCs() ? pRpr.getSzCs() : pRpr
				.addNewSzCs();
		szCs.setVal(new BigInteger(fontSize));

		// 设置字体样式
		if (isBlod) {
			pRun.setBold(isBlod);
		}
		if (isItalic) {
			pRun.setItalic(isItalic);
		}
		if (isStrike) {
			pRun.setStrike(isStrike);
		}
		if (colorVal != null) {
			pRun.setColor(colorVal);
		}

		// 设置字突出显示文本
		if (underLineStyle > 0 && underLineStyle < 17) {
			CTHighlight hightLight = pRpr.isSetHighlight() ? pRpr
					.getHighlight() : pRpr.addNewHighlight();
			hightLight.setVal(STHighlightColor.Enum.forInt(underLineStyle));
		}

		// 设置下划线样式
		if (isUnderLine) {
			CTUnderline u = pRpr.isSetU() ? pRpr.getU() : pRpr.addNewU();
			u.setVal(STUnderline.Enum.forInt(Math.abs(underLineStyle % 19)));
			if (underLineColor != null) {
				u.setColor(underLineColor);
			}
		}

		if (isShd) {
			// 设置底纹
			CTShd shd = pRpr.isSetShd() ? pRpr.getShd() : pRpr.addNewShd();
			if (shdValue > 0 && shdValue <= 38) {
				shd.setVal(STShd.Enum.forInt(shdValue));
			}
			if (shdColor != null) {
				shd.setColor(shdColor);
			}
		}
	}

	// 设置页面背景色
	public void setDocumentbackground(XWPFDocument document, String bgColor) {
		CTBackground bg = document.getDocument().isSetBackground() ? document
				.getDocument().getBackground() : document.getDocument()
				.addNewBackground();
		bg.setColor(bgColor);
	}

	public void addNewPage(XWPFDocument document, BreakType breakType) {
		XWPFParagraph xp = document.createParagraph();
		xp.createRun().addBreak(breakType);
	}

	public void saveDocument(XWPFDocument document, String savePath)
			throws Exception {
		FileOutputStream fos = new FileOutputStream(savePath);
		document.write(fos);
		fos.close();
	}
}

    结果为:

   

    

      转载请注明原处,原文链接:http://53873039oycg.iteye.com/blog/2157758 ,谢谢。
      全文完

 

  • 大小: 47.6 KB
  • 大小: 56.6 KB
0
0
分享到:
评论

相关推荐

    POI解析word2007文本及图片(已测试).doc

    Apache POI 解析 Word 2007 文本及图片 Apache POI (Poor Obfuscation Implementation) 是一个 Java 库,用于读取和写入 Microsoft Office 文件,包括 Word、Excel、PowerPoint 等。 Apache POI 提供了对 Word ...

    POI操作Word中插入文本和图片

    在本文中,我们将深入探讨如何使用Apache POI在Word文档中插入文本和图片,这对于创建动态报告模板尤其有用。 一、Apache POI基础 Apache POI提供了一系列接口和类,用于读写微软的Office文件格式。对于Word处理,...

    POI读取 word 2003 和 word 2007 的例子

    这是一个POI读取word 2003 和 word 2007的例子 是一个Eclipse工程 下载后直接导入工程 运行 src 目录下的 Test java 类即可 这个 rar 包中包含着 POI 读取word 2003 和 word 2007 所需要的 jar 包 也有需要读取的 ...

    java poi 替换word文本

    java poi 实现word文本的替换,支持doc和docx格式的文本替换

    [简单]poi读取word 2007简单文本框值

    标题中的“poi读取word 2007简单文本框值”指的是使用Apache POI库来读取Microsoft Word 2007文档中简单文本框内的文本内容。Apache POI是一个流行的开源Java库,用于处理Microsoft Office格式的文件,如Word(.docx...

    POI导出Word 页眉 页脚 标题设置

    此外,可以使用`CharacterRun`对象设置文本样式,例如加粗或斜体。 5. **显示设置** 显示设置可能包括页面方向(横向或纵向)、边距、页边距等。在POI中,这些可以通过`Section`对象的属性进行调整。例如,`...

    POI 替换word2007文本框的值

    在本文中,我们将深入探讨如何使用POI库来替换Word2007文档中的文本框值,这对于自动化报告生成、批量文档编辑以及模板驱动的文档创建等场景非常有用。 首先,我们需要了解Word2007文档(.docx)的内部结构。它是...

    POI DOCX 完美文本、表格模板文字替换并实现在指定位置插入图片浮于文字上方

    在本文中,我们将深入探讨如何使用Apache POI库在DOCX文档中实现完美的文本替换以及在指定位置插入图片,让图片浮于文字上方。Apache POI是一个流行的Java库,用于处理Microsoft Office格式的文件,包括DOCX。我们将...

    poi将word转换成html、样式 表格 图片处理

    Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Word(.doc, .docx)、Excel(.xls, .xlsx)等。在本案例中,我们关注的是如何使用Apache POI将Word文档转换为HTML格式,并且保持原有的样式、表格...

    java poi设置生成的word的图片为上下型环绕以及其位置的实现

    【Java POI 设置 Word 图片为上下型环绕及位置实现详解】 在使用 Java POI 库生成 Word 文档时,有时我们需要对插入的图片进行格式调整,比如设置为上下型环绕,使其在文本中占据独立空间,同时可以调整图片的位置...

    Java利用poi对word插入文字图片

    本项目“Java利用poi对word插入文字图片”是一个具体的示例,旨在教给你如何使用Apache POI API在Word文档中插入文字和图片。下面将详细阐述相关的知识点。 首先,Apache POI提供了HWPF(Horrible Word Processor ...

    利用POI将word转换成html实现在线阅读

    如果是Word 2007及以上版本(.docx),则使用XWPFDocument。 2. **遍历文档内容**:通过Document对象可以访问文档中的段落、表格、列表、图片等元素。对于每种元素,需要将其转换为对应的HTML标签。例如,段落可以...

    poi合并多个word文档并设置页码

    在"poi合并多个word文档并设置页码"这个主题中,我们将深入探讨如何利用POI API来实现这两个功能。 首先,让我们讨论如何合并多个Word文档。Apache POI提供了一个名为`XWPFDocument`的类,它代表一个Open XML格式的...

    java使用POI操作Word文档,写入文字与图片

    总的来说,Apache POI为Java开发者提供了一种强大且灵活的方式来操作Word文档,无论是简单地写入文字还是复杂的格式化操作,甚至是插入图片和图表,都能轻松应对。通过熟练掌握POI库,你可以创建自动化报告、动态...

    java poi把word文档转化为html,支持doc。

    Java POI库是一个强大的工具,专门用于处理Microsoft Office格式的文件,包括Word(.doc和.docx)文档。在这个特定的场景中,我们利用POI将Word文档转换为HTML格式,以便于在网页上展示或者进行其他Web相关的操作。...

    使用poi替换word中的文字和图片实现打印

    本示例将深入探讨如何使用Apache POI库来替换Word文档中的文字和图片,并实现打印功能。 首先,确保在项目中正确导入了Apache POI相关的JAR包。通常,这包括poi-ooxml、poi-ooxml-schemas和commons-lang3等。这些库...

    poi解析excel、word2007,2010等版本

    本项目中的"poiTest"是一个Web应用示例,它演示了如何使用Apache POI来解析不同版本的Excel(如2007、2010)以及Word2007和2010文档。 1. **Apache POI 简介** Apache POI 是由Apache软件基金会开发的一个项目,...

    Java Poi流 根据Word模板插入相应的文本、表格和图片,生成新的Word报告

    - POI API提供了`XWPFDocument`类来处理`.docx`文件,这是Word 2007及以后版本的格式。首先,你需要加载模板文件到内存中,创建`XWPFDocument`对象。 - 使用`XWPFParagraph`和`XWPFRun`类,你可以找到并替换模板中...

Global site tag (gtag.js) - Google Analytics