Java 借助poi操作Wold工具类

?

Apache封装的POI组件对Excel,Wold的操作已经非常的丰富了,在项目上也会经常用到一些POI的基本操作

这里就简单的阐述POI操作Wold的基本工具类,代码还是有点粗造的,但是不影响使用。

这个类包含了一些对文本进行换行,加粗,倾斜,字体颜色,大小,首行缩进,添加边框等方法。分享给大家学习下:

Apache POI的组件:

ApachePOI包含用于处理MS-Office的所有OLE2复合文档的类和方法。该API的组件列表如下 -

POIFS(不良混淆实现文件系统) - 此组件是所有其他POI元素的基本因素。它用于显式读取不同的文件。

HSSF(可怕的SpreadSheet格式) - 用于读取和写入.xls格式的MS-Excel文件。

XSSF(XML SpreadSheet格式) - 用于MS-Excel的.xlsx文件格式。

HPSF(可怕的属性集格式) - 用于提取MS-Office文件的属性集。

HWPF(可怕的字处理器格式) - 用于读写MS-Word的.doc扩展文件。

XWPF(XML字处理器格式) - 用于读写MS-Word的.docx扩展文件。

HSLF(可怕的幻灯片布局格式) - 用于阅读,创建和编辑PowerPoint演示文稿。

HDGF(可怕的DiaGram格式) - 它包含MS-Visio二进制文件的类和方法。

HPBF(可怕的PuBlisher格式) - 用于读写MS-Publisher文件。

下面就献上代码:

首先我们引入需要的第三方jar包

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.9</version>
</dependency>
<dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi-ooxml</artifactId>
   <version>3.9</version>
</dependency>

工具类具体代码:

package com.herbert.test;

import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
* Created by Herbert on 2019/1/22.
*/
public class WoldUtil {
  private static  XWPFDocument document = null;

   private static  XWPFParagraph paragraph = null;

   /**
    *  初始化创建Word文件
    */
   public WoldUtil(){
       document = new XWPFDocument();
   }

   /**
    *  创建一个段落
    * @param position 段落位置
    *                 0:居左
    *                 1:居中
    *                 2:居右
    */
   public  void createParagraph(Integer position){
       paragraph = document.createParagraph();
       switch (position){
           case 0:
               paragraph.setAlignment(ParagraphAlignment.LEFT);
               break;
           case 1:
               paragraph.setAlignment(ParagraphAlignment.CENTER);
               break;
           case 2:
               paragraph.setAlignment(ParagraphAlignment.RIGHT);
               break;
           default:
               paragraph.setAlignment(ParagraphAlignment.LEFT);
               break;
       }
   }

   /**
    *  单线边框
    */
   public  void  createBorder(){

       paragraph.setBorderTop(Borders.THICK);//设置上边框
       paragraph.setBorderBottom(Borders.THICK);//设置下边框
       paragraph.setBorderLeft(Borders.THICK);//设置左边框
       paragraph.setBorderRight(Borders.THICK);//设置右边框
   }

   /**
    *  双线边框
    */
   public  void  createBorderDouble(){
       paragraph.setBorderTop(Borders.DOUBLE);//设置上边框
       paragraph.setBorderBottom(Borders.DOUBLE);//设置下边框
       paragraph.setBorderLeft(Borders.DOUBLE);//设置左边框
       paragraph.setBorderRight(Borders.DOUBLE);//设置右边框
   }

   /**
    * 首行缩进
    * @param indentation
    */
   public void addTextIndent(Integer indentation){
       paragraph.setIndentationFirstLine(indentation);
   }

   /**
    *  创建文本信息
    * @param text 文本信息
    * @param bold 是否加粗 true为加粗
    * @param italic 是否倾斜 true为倾斜
    * @param color 颜色码
    * @param fontSize 字体大小
    * @param fontFamily 设置字体
    */
   public  void createRun(String text, Boolean bold,Boolean italic, String color,Integer fontSize,String fontFamily){
       XWPFRun r = paragraph.createRun();//创建段落文本
       r.setText(text);
       r.setBold(bold);//设置为粗体 true 为粗体
       r.setItalic(italic);//设置为倾斜 true 为粗体
       r.setColor(color);//设置颜色
       r.setFontSize(fontSize);
       CTRPr rpr = r.getCTR().isSetRPr() ? r.getCTR().getRPr() : r.getCTR().addNewRPr();
       CTFonts fonts = rpr.isSetRFonts() ? rpr.getRFonts() : rpr.addNewRFonts();
       fonts.setAscii(fontFamily);
       fonts.setEastAsia(fontFamily);
       fonts.setHAnsi(fontFamily);

   }

   /**
    *  写到磁盘
    * @param path
    */
   public  void write(String  path){
       try{
           FileOutputStream out = new FileOutputStream(path);
           document.write(out);
           out.close();
       }catch (IOException e){
           e.printStackTrace();
           System.out.println("文件出现错误");
       }

   }

   /**
    *  创建空行
    * @param counts 空行个数
    */
   public  void createEmpty(Integer counts){
       for(int i =0;i<counts;i++){
           XWPFParagraph empty = document.createParagraph();
           XWPFRun e = empty.createRun();
           e.setText(" ");
       }
   }

   /**
    *  查询wold中的数据 返回List 集合
    * @param path  wold所在的地址
    * @return
    */
   public List<String> query(String path){
       List<String> list  = new ArrayList<String>();
       try{
           FileInputStream stream = new FileInputStream(path);
           XWPFDocument doc = new XWPFDocument(stream);// 创建Word文件
           for(XWPFParagraph p : doc.getParagraphs()){//遍历段落
               System.out.println(p.getParagraphText());
               list.add(p.getParagraphText());
           }
       }catch (Exception e){
           e.printStackTrace();
       }
       return list;
   }
   public static void main(String args[]) throws Exception {
       WoldUtil woldUtil = new WoldUtil();
       woldUtil.createParagraph(1);
       woldUtil.createBorder();
       woldUtil.createRun("(标题居中)Apache POI的组件", true, false,"000000",17,FontFamily.BLACKBODY);
       woldUtil.createBorderDouble();

       woldUtil.createParagraph(0);
       woldUtil.createRun("(边框)Apache POI包含用于处理MS-Office的所有OLE2复合文档的类和方法。该API的组件列表如下:", false,true, "4682B4",15,FontFamily.CHINESE_FINE_BLACK);

       woldUtil.createEmpty(3);

       woldUtil.createParagraph(0);
       woldUtil.addTextIndent(600);
       woldUtil.createRun("(首行缩进)• POIFS(不良混淆实现文件系统) - 此组件是所有其他POI元素的基本因素。它用于显式读取不同的文件", true,false,"A0522D",13,FontFamily.MICROSOFT_YAHEI);

       woldUtil.createEmpty(1);

       woldUtil.createParagraph(0);
       woldUtil.createRun("•HWPF(可怕的字处理器格式) - 用于读写MS-Word的.doc扩展文件。", true,false,"eeff00",13,FontFamily.MICROSOFT_YAHEI);

       woldUtil.write("E:\\herbert\\sample.doc");

       List<String> list =woldUtil.query("E:\\herbert\\sample.doc");
       System.out.println("list=====>>>>>>>>    "+list.toString());
   }
}

测试截图

?

猜您喜欢

往期精选▼

1:POI对Excel进行读取操作

2:POI实现Excel导入数据库

3:二维码生成,包含文本,网址,图片等

4:自定义数据库连接池实现方式

5:开发中我们需要遵循的几个设计原则!

6:Java&nbsp;借助第三方jar包操作PDF工具类(复制即可)

?

? 大 · 家 · 都 · 爱 ?

1:【爬虫】广度优先遍历抓取数据概述

2:【爬虫】网络爬虫入门获取信息

3:【爬虫】数据结构实现折半查找的算法

4:“无形”战争:爬虫技术是武器,你的手机是一名不知情的士兵

?

原文地址:https://www.cnblogs.com/zhaixingzhu/p/12562564.html

时间: 2024-10-13 17:14:12

Java 借助poi操作Wold工具类的相关文章

poi操作Excel工具类

在上一篇文章<使用poi读写Excel>中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完成的功能是:读取Excel.写入Excel.合并Excel的功能.

自己封装的poi操作Excel工具类

该工具类主要完成的功能是:读取Excel.汇总Excel的功能.在读取时,可以设定开始和结束读取的位置.设定是否读取多个sheet.设定读取那个或者那些sheet等.在汇总时,如设定是否覆盖目标文件.设定是否比较检查重复内容.设定检查重复的列索引等功能. package com.tgb.ccl.excel.util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; impo

java中IO写文件工具类

下面是一些根据常用java类进行组装的对文件进行操作的类,平时,我更喜欢使用Jodd.io中提供的一些对文件的操作类,里面的方法写的简单易懂. 其中jodd中提供的JavaUtil类中提供的方法足够我们使用,里面的方法写的非常简练,例如append,read等方法,封装更好,更符合面向对象, 这里面我写的一些方法可多都是模仿jodd,从里面进行抽取出来的. /** * 获取路径文件夹下的所有文件 * @param path * @return */ public static File[] ge

JAVA使用POI操作excel

这里提一下,java操作excel的组件除了apache的poi,还有jexcelapi(jxl),其中poi组件的获取地址为poi.apache.org. poi组件中常用的类有HSSFworkbook表示一个完整的excel表格,HSSFsheet表示excel中的一个工作薄,HSSFRow表示工作薄中的一行,HSSFCell表示一个单元格 下面是一个简单的写入的demo public static void main(String [] args){ try { HSSFWorkbook

JAVA 16(集合框架工具类)

Collections :工具类,专门对集合进行操作的.所有方法都是静态的,构造方法是私有的,不可以创建对象,通过Collections.xxx();调用工具类中的方法. 1, Collections.sort(); //对集合进行排序,List可以,Set不可以,因为有自动排序的TreeSet,其实是调用对象的Compare方法,如果想要排序自定义对象, sort后面要传入比较器. Collections.sort(list,new Strlen()); 下面有举例说明 2, Collecti

c语言中字符串操作的工具类

 1.编写头文件 #define _CRT_SECURE_NO_WARNINGS //#pragmawarning(disable:4996) #include <stdio.h> #include <stdlib.h> #include <string.h> struct CString { char *p;        //保存字符串首地址 int reallength; //实际长度 }; typedef struct CString mystring;//

Java随机取字符串的工具类

原文:Java随机取字符串的工具类 源代码下载地址:http://www.zuidaima.com/share/1550463479532544.htm Java 随机取字符串的工具类 可以全部是数字,字符,也可以字符和数字组合的工具类,希望能给大家带来帮助 package com.zuidaima.test; import java.util.Random; public class RandomUtils { public static final String ALLCHAR = "012

List操作的工具类

1 /** 2 * <p>list操作的工具类</p> 3 */ 4 public class ListUtil { 5 /** 6 * 过滤掉list里面才重复项 7 * 8 * @param list 9 * @return List 10 */ 11 public static List<String> filterRepeat(List<String> list){ 12 int length = list.size(); 13 for(int i

java实现发邮件的工具类,方便 好用(需要架包的Send Email To me)

原文:java实现发邮件的工具类,方便 好用(需要架包的Send Email To me) 源代码下载地址:http://www.zuidaima.com/share/1550463394794496.htm package com.zuidaima.util; import java.util.Properties; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.Multipart; impor