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 ,谢谢。
全文完。
相关推荐
POI 替换word2007文本框的值POI,包含word表中的文本框的值,定义好word模板即可替换word中的值。
POI对Word的操作,特别是针对生成报告模板时,向word中写入文本和图片。
值得注意的是 POI 在读取 word 文件的时候不会读取 word 文件中的图片信息 还有就是对于 2007 版的 word docx 如果 word 文件中有表格 所有表格中的数据都会在读取出来的字符串的最后 ">这是一个POI读取word 2003 和...
POI解析word2007文本及图片(已测试).doc
NULL 博文链接:https://53873039oycg.iteye.com/blog/2187388
非常好的基于word模版,标签,导出word数据的例子
完整的Java project demo,包含所需的所有jar包,示例文件,使用说明等
很好的导出例子,主要在于解决POI导出数据时文字的替换问题,方法简单使用,不过是解决导出word2007的
java使用poi操作.doc word模板替换,循环插入表格
POI导出Word包含页眉 页脚的设置,标题的设置以及显示显示设置,包括POI操作Word完整的jar包
poi生成wordpoi生成wordpoi生成wordpoi生成wordpoi生成wordpoi生成wordpoi生成wordpoi生成wordpoi生成word
POI报表Word导出
Java POI 生成Word文档,支持图片插入,关键是修改XML部分,本人已测试通过。
下载后,运行 可以 Test1中的main方法,注意里面的word模版地址要修改下。 test1.java主要是针对word的书签操作 MSWordTool.java主要是针对word的列表书签的操作,相对来说比较复杂,具体看个人需求。
使用poi替换word中的图片,无需加书签,doc/docx均可,亲测。
Apache poi 根据word模板生成word报表 替换 循环列表 图片,代码调试过了,修改相应的图片位置,word模板路径即可运行
附件包含一个web项目,是一个简单的解析excel和word的例子,项目中包含jar poi解析excel、word2007,2010等版本
使用poi替换word中的文字和图片实现打印,注意代码中的jar包、图片、word位置
。。。
。。。