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

[简单]poi插入word 2007 Wingdings字符

    博客分类:
  • poi
 
阅读更多

      word 2007 Wingdings字符操作步骤如下图:

      

    

      代码很简单:

      

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

import org.apache.poi.xwpf.usermodel.BreakType;
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.CTHpsMeasure;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSym;

public class POI_07_插入Wingdings字符 {
	public static void main(String[] args) throws Exception {
		POI_07_插入Wingdings字符 t = new POI_07_插入Wingdings字符();
		t.testWingdings();
	}

	public void testWingdings() throws Exception {
		XWPFDocument xdoc = new XWPFDocument();
		XWPFParagraph p = xdoc.createParagraph();
		XWPFRun pRun = getOrAddParagraphFirstRun(p, false, false);
		CTRPr pRpr = getRunCTRPr(p, pRun);
		// 设置字体大小
		CTHpsMeasure sz = pRpr.isSetSz() ? pRpr.getSz() : pRpr.addNewSz();
		sz.setVal(new BigInteger("26"));

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

		pRun.setText("-------------------------------Wingdings字符---------------------------------------");
		pRun.addBreak();
		pRun = getOrAddParagraphFirstRun(p, true, false);
		pRpr = getRunCTRPr(p, pRun);
		// 设置字体大小
		sz = pRpr.isSetSz() ? pRpr.getSz() : pRpr.addNewSz();
		sz.setVal(new BigInteger("26"));

		szCs = pRpr.isSetSzCs() ? pRpr.getSzCs() : pRpr.addNewSzCs();
		szCs.setVal(new BigInteger("26"));
		// 32-255
		List<CTSym> symList = pRun.getCTR().getSymList();
		for (int i = 32; i <= 255; i++) {
			symList.add(getCTSym("Wingdings", "F0" + Integer.toHexString(i)));
			pRun.setText("  [字符编码:" + i + "]  ");
		}
		
		pRun.addBreak(BreakType.PAGE);
		p = xdoc.createParagraph();
		pRun = getOrAddParagraphFirstRun(p, false, false);
		pRpr = getRunCTRPr(p, pRun);
		// 设置字体大小
		sz = pRpr.isSetSz() ? pRpr.getSz() : pRpr.addNewSz();
		sz.setVal(new BigInteger("26"));

		szCs = pRpr.isSetSzCs() ? pRpr.getSzCs() : pRpr.addNewSzCs();
		szCs.setVal(new BigInteger("26"));
		pRun.setText("-------------------------------Wingdings 2字符---------------------------------------");
		pRun.addBreak();
		pRun = getOrAddParagraphFirstRun(p, true, false);
		pRpr = getRunCTRPr(p, pRun);
		// 设置字体大小
		sz = pRpr.isSetSz() ? pRpr.getSz() : pRpr.addNewSz();
		sz.setVal(new BigInteger("26"));

		szCs = pRpr.isSetSzCs() ? pRpr.getSzCs() : pRpr.addNewSzCs();
		szCs.setVal(new BigInteger("26"));
		// 32-255
		symList = pRun.getCTR().getSymList();
		for (int i = 32; i <= 255; i++) {
			symList.add(getCTSym("Wingdings 2", "F0" + Integer.toHexString(i)));
			pRun.setText("  [字符编码:" + i + "]  ");
		}
		
		pRun.addBreak(BreakType.PAGE);
		p = xdoc.createParagraph();
		pRun = getOrAddParagraphFirstRun(p, false, false);
		pRpr = getRunCTRPr(p, pRun);
		// 设置字体大小
		sz = pRpr.isSetSz() ? pRpr.getSz() : pRpr.addNewSz();
		sz.setVal(new BigInteger("26"));

		szCs = pRpr.isSetSzCs() ? pRpr.getSzCs() : pRpr.addNewSzCs();
		szCs.setVal(new BigInteger("26"));
		pRun.setText("-------------------------------Wingdings 3字符---------------------------------------");
		pRun.addBreak();
		pRun = getOrAddParagraphFirstRun(p, true, false);
		pRpr = getRunCTRPr(p, pRun);
		// 设置字体大小
		sz = pRpr.isSetSz() ? pRpr.getSz() : pRpr.addNewSz();
		sz.setVal(new BigInteger("26"));

		szCs = pRpr.isSetSzCs() ? pRpr.getSzCs() : pRpr.addNewSzCs();
		szCs.setVal(new BigInteger("26"));
		// 32-255
		symList = pRun.getCTR().getSymList();
		for (int i = 32; i <= 255; i++) {
			symList.add(getCTSym("Wingdings 3", "F0" + Integer.toHexString(i)));
			pRun.setText("  [字符编码:" + i + "]  ");
		}
		saveDocument(xdoc, "f:/saveFile/temp/sys_" + System.currentTimeMillis()
				+ ".docx");
	}

	public CTSym getCTSym(String wingType, String charStr) throws Exception {
		CTSym sym = CTSym.Factory
				.parse("<xml-fragment w:font=\""
						+ wingType
						+ "\" w:char=\""
						+ charStr
						+ "\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" xmlns:wne=\"http://schemas.microsoft.com/office/word/2006/wordml\"> </xml-fragment>");
		return sym;
	}

	/**
	 * @Description: 得到XWPFRun的CTRPr
	 */
	public CTRPr getRunCTRPr(XWPFParagraph p, XWPFRun pRun) {
		CTRPr pRpr = null;
		if (pRun.getCTR() != null) {
			pRpr = pRun.getCTR().getRPr();
			if (pRpr == null) {
				pRpr = pRun.getCTR().addNewRPr();
			}
		} else {
			pRpr = p.getCTP().addNewR().addNewRPr();
		}
		return pRpr;
	}

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

	public XWPFRun getOrAddParagraphFirstRun(XWPFParagraph p, boolean isInsert,
			boolean isNewLine) {
		XWPFRun pRun = null;
		if (isInsert) {
			pRun = p.createRun();
		} else {
			if (p.getRuns() != null && p.getRuns().size() > 0) {
				pRun = p.getRuns().get(0);
			} else {
				pRun = p.createRun();
			}
		}
		if (isNewLine) {
			pRun.addBreak();
		}
		return pRun;
	}
}

   结果为:

   

      本文系原创,转载请注明出处,本文原始链接:http://53873039oycg.iteye.com/blog/2194564  ,谢谢。

      全文完。

    

  • 大小: 86 KB
  • 大小: 25 KB
  • 大小: 115.5 KB
分享到:
评论

相关推荐

    POI读取 word 2003 和 word 2007 的例子

    值得注意的是 POI 在读取 word 文件的时候不会读取 word 文件中的图片信息 还有就是对于 2007 版的 word docx 如果 word 文件中有表格 所有表格中的数据都会在读取出来的字符串的最后 "&gt;这是一个POI读取word 2003 和...

    POI 替换word2007文本框的值

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

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

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

    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提供了一套完整的API,使得在Java中操作Word文档变得简单。无论是插入文本还是图片,都可以灵活控制内容和样式。利用这些功能,你可以构建出复杂的动态报告模板,满足各种业务需求。在实际开发中,还可以...

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

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

    利用poi+word模版书签,向word中插入数据

    本教程将深入讲解如何利用Apache POI的XWPF模块结合Word模板中的书签,实现数据的动态插入,从而创建个性化的Word文档。 首先,我们需要理解Apache POI的XWPF模块。XWPF(XML Word Processing)是POI项目的一部分,...

    如何使用POI解决word2007中字符替换问题

    在这个场景中,我们关注的是如何使用POI来解决在Word 2007文档中进行字符替换的问题。在处理Word 2007(.docx)文件时,由于其XML基础结构,我们需要采用不同于处理Word 2003(.doc)文件的方法。 首先,我们需要...

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

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。在本主题中,我们将深入探讨如何使用POI库来导出Word文档,并进行页眉、页脚和标题的设置。这个过程涉及到对Word...

    POI报表Word导出

    POI报表Word导出

    poi解析excel、word2007,2010等版本

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

    poi导入word和图片

    ### POI导入Word文档与图片的关键技术点 #### 一、概述 Apache POI 是一个用于读写 Microsoft Office 格式文件(如 .doc、.xls 和 .ppt)的 Java API。本文档将详细介绍如何使用 POI 库来读取 Word 文档(包括 ....

    使用java Apache poi 根据word模板生成word报表例子

    使用java Apache poi 根据word模板生成word报表 仅支持docx格式的word文件,大概是word2010及以后版本,doc格式不支持。 使用说明:https://blog.csdn.net/u012775558/article/details/79678701

    poi完美word转html

    2. 只支持DOC不支持DOCX:代码示例仅适用于旧版的Word文档格式(.doc),对于新版的Word文档格式(.docx),需要使用不同的方法或更高版本的POI库。 六、扩展阅读与资源: 为了更深入地理解和应用Apache POI进行...

    poi操作word书签,兼容2003和2007

    下载后,运行 可以 Test1中的main方法,注意里面的word模版地址要修改下。 test1.java主要是针对word的书签操作 MSWordTool.java主要是针对word的列表书签的操作,相对来说比较复杂,具体看个人需求。

    Apache poi 根据word模板生成word报表 替换 循环列表 图片

    3. **插入图片**:Apache POI允许我们在Word文档中插入图片。首先,你需要将图片读入内存,这可以使用InputStream实现。然后,通过创建一个XWPFPictureData对象,将图片数据添加到文档的图片数据部分。最后,在需要...

    poiWord2003和Word2007包括图片完整转换成html 包括完整Jar包

    1. **Apache POI基础**:Apache POI提供了HSSF和XSSF两个API,分别用于读写老版本的BIFF8格式(如Word2003的.doc文件)和新的OOXML格式(如Word2007的.docx文件)。HSSF对应于Excel,而XSSF则对应于Word和PowerPoint...

    java使用poi操作.doc word模板替换,循环插入表格

    本篇文章将深入探讨如何利用POI库在Word文档中进行模板替换以及循环插入表格的操作。 首先,我们需要理解Apache POI的工作原理。POI提供了HWPFOI(用于处理老版的.doc文件)和XWPF(用于处理新版的.docx文件)两个...

Global site tag (gtag.js) - Google Analytics