Java如何基于poi操作Wold工具类

 更新时间:2020年03月25日 11:20:42   作者:摘星族  
这篇文章主要介绍了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());
  }
}

测试截图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 基于java servlet过滤器和监听器(详解)

    基于java servlet过滤器和监听器(详解)

    下面小编就为大家带来一篇基于java servlet过滤器和监听器(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Java中的DelayQueue源码解析

    Java中的DelayQueue源码解析

    这篇文章主要介绍了Java中的DelayQueue源码解析,一个实现PriorityBlockingQueue实现延迟获取的无界队列,在创建元素时,可以指定多久才能从队列中获取当前元素,只有延时期满后才能从队列中获取元素,需要的朋友可以参考下
    2023-12-12
  • java随机验证码生成实现实例代码

    java随机验证码生成实现实例代码

    这篇文章主要介绍了java随机验证码生成实现实例代码的相关资料,需要的朋友可以参考下
    2017-05-05
  • Java使用WeakHashMap实现缓存自动清理

    Java使用WeakHashMap实现缓存自动清理

    在 Java 中,内存管理是一个重要的话题,尤其是在涉及到缓存的实现时,如果缓存项不再被使用,我们希望它们能被自动清理,而不必手动删除,WeakHashMap 就是 Java 提供的一种用于缓存和内存管理的工具,本文将深入探讨如何利用 WeakHashMap 来实现缓存自动清理
    2025-01-01
  • IDEA打包maven多模块相互依赖项目全过程

    IDEA打包maven多模块相互依赖项目全过程

    这篇文章主要介绍了IDEA打包maven多模块相互依赖项目全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • 深入浅出讲解Java8函数式编程

    深入浅出讲解Java8函数式编程

    不管是前端还是后端开发人员,学习一些函数式编程的思想和概念,对于手头的开发工作和以后的职业发展,都是大有裨益的,下面这篇文章主要给大家介绍了关于Java8函数式编程的相关资料,需要的朋友可以参考下
    2022-01-01
  • java随机字符补充版

    java随机字符补充版

    今天在zuidaimai看到一个java随机字符生成demo,正好要用,但发现不完整,重新整理一下,分享给有需要的朋友
    2014-01-01
  • Java中的数组基础知识学习教程

    Java中的数组基础知识学习教程

    这篇文章主要介绍了Java中的数组基础知识学习教程,文中同时也整理了Java对数字类型的支持状况及Number类中的方法,需要的朋友可以参考下
    2016-02-02
  • SpringBoot集成swagger3.0指南分享

    SpringBoot集成swagger3.0指南分享

    本文介绍了如何在Spring Boot项目中集成Swagger 3.0,包括添加依赖、配置Swagger、在Controller上添加注解以及配置访问权限
    2024-11-11
  • java8实现list集合中按照某一个值相加求和,平均值等操作代码

    java8实现list集合中按照某一个值相加求和,平均值等操作代码

    这篇文章主要介绍了java8实现list集合中按照某一个值相加求和,平均值等操作代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08

最新评论