zoukankan      html  css  js  c++  java
  • 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:“无形”战争:爬虫技术是武器,你的手机是一名不知情的士兵

  • 相关阅读:
    [levelDB] Version Manager
    [levelDB] Compaction
    <Effective Modern C++> 读书笔记
    <Effective Modern C++> 笔记-1-Deducing Type
    水塘抽样(Reservoir Sampling)问题
    【C++工程实践】条件变量
    【c++工程实践】内存模型
    【c++工程实践】智能指针
    【c++工程实践】值语义与右值引用
    分布式系统原理-CAP/2PC/3PC
  • 原文地址:https://www.cnblogs.com/zhaixingzhu/p/12562564.html
Copyright © 2011-2022 走看看