开发手册 欢迎您!
软件开发者资料库

Java 使用Apache POI常用操作word的方法及示例代码

Apache POI是一个Java库,用于处理基于Office Open XML标准(OOXML)和Microsoft的OLE 2复合文档格式(OLE2)的各种文件格式。本文主要介绍Java中,使用poi操作word常用方法(设置标题和子标题的样式,word中插入图片,设置段落的格式,创建word文件),以及相关操作的示例代码。

1、安装引用Apache POI

Maven中pom.xml中添加依赖如下:


org.apache.poi
poi-ooxml
3.15

2、读取txt文件中内容

可以读取txt文本文件中内容插入word中。

public String convertTextFileToString(String fileName) {
try (Stream stream
= Files.lines(Paths.get(ClassLoader.getSystemResource(fileName).toURI()))) {
return stream.collect(Collectors.joining(" "));
} catch (IOException | URISyntaxException e) {
return null;
}
}

3、格式化标题和子标题

创建标题,需要首先实例化XWPFParagraph类,并在新对象上设置对齐方式:

XWPFDocument document = new XWPFDocument();XWPFParagraph title = document.createParagraph();title.setAlignment(ParagraphAlignment.CENTER);//段落的内容需要包装在XWPFRun对象中,可以配置此对象以设置文本值及其关联的样式:XWPFRun titleRun = title.createRun();titleRun.setText("Build Your REST API with Spring");titleRun.setColor("009933");titleRun.setBold(true);titleRun.setFontFamily("Courier");titleRun.setFontSize(20);//创建一个XWPFParagraph实例,该实例包含子标题XWPFParagraph subTitle = document.createParagraph();subTitle.setAlignment(ParagraphAlignment.CENTER);XWPFRun subTitleRun = subTitle.createRun();subTitleRun.setText("from HTTP fundamentals to API Mastery");subTitleRun.setColor("00CC44");subTitleRun.setFontFamily("Courier");subTitleRun.setFontSize(16);subTitleRun.setTextPosition(20);subTitleRun.setUnderline(UnderlinePatterns.DOT_DOT_DASH);

4、word中插入图片

图片也需要包装在XWPFParagraph实例中。要将图片水平居中放置在字幕下方,则需将下面代码段放在上面给出的代码下方:

XWPFParagraph image = document.createParagraph();image.setAlignment(ParagraphAlignment.CENTER);//设置此图像与其下方文本之间距离的方法XWPFRun imageRun = image.createRun();imageRun.setTextPosition(20);//获取图像,然后将其插入具有指定尺寸的MS Word文件中Path imagePath = Paths.get(ClassLoader.getSystemResource(logo).toURI());imageRun.addPicture(Files.newInputStream(imagePath),  XWPFDocument.PICTURE_TYPE_PNG, imagePath.getFileName().toString(),  Units.toEMU(50), Units.toEMU(50));

5、通过txt文件中内容创建段落并设置格式

//通过txt中内容创建第一段WPFParagraph para1 = document.createParagraph();para1.setAlignment(ParagraphAlignment.BOTH);String string1 = convertTextFileToString("./paragraph1.txt");XWPFRun para1Run = para1.createRun();para1Run.setText(string1);//创建另外两个段落XWPFParagraph para2 = document.createParagraph();para2.setAlignment(ParagraphAlignment.RIGHT);String string2 = convertTextFileToString("./paragraph2.txt");XWPFRun para2Run = para2.createRun();para2Run.setText(string2);para2Run.setItalic(true);XWPFParagraph para3 = document.createParagraph();para3.setAlignment(ParagraphAlignment.LEFT);String string3 = convertTextFileToString("./paragraph3.txt");XWPFRun para3Run = para3.createRun();para3Run.setText(string3);

6、创建生成word文件

//XWPFDocument document = new XWPFDocument();FileOutputStream out = new FileOutputStream(output);document.write(out);out.close();document.close();

7、word添加水印

 //添加水印      public void createWaterMark(XWPFDocument doc){        XWPFHeaderFooterPolicy policy=doc.getHeaderFooterPolicy();        policy.createWatermark("中国华西监理信息管理平台");    }

相关文档:

java 使用aspose.word多张图片转成pdf的方法及示例代码

java利用aspose组件将word转成pdf 中文乱码问题