快速上手 Apache-POI【操作微软office,主要是excel】

快速上手 Apache-POI【操作微软office,主要是excel】

文章目录

  • 快速上手 Apache-POI【操作微软office,主要是excel】
  • 前言
  • 一、POI是什么?
  • 二、使用步骤
    • 1.核心组件介绍
    • 2.引入依赖
    • 3.核心类
      • 3.1 工作簿类 Workbook
      • 3.2 标签页类 Sheet
      • 3.3 行类 Row
      • 3.4 单元格类 Cell
  • 4. 读取和创建
    • 4.1 读取
    • 4.2 创建
  • 总结


前言

提示:需要对面向对象思想有一定了解。


一、POI是什么?

Apache POI - the Java API for Microsoft Documents,顾名思义,Apache的三方包,用来操作微软office文档的,多数时候用来操作excel,所以这里就以excel方面来说明。

二、使用步骤

1.核心组件介绍

【描述】
POI的组件列表中,针对excel的主要是HSSF和XSSF组件,前者针对97-2007的通用版excel,即后缀xls;后者针对2007或更高版的excel,即后缀xlsx。

【官方描述】

HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format. 
XSSF is the POI Project's pure Java implementation of the Excel 2007 OOXML (.xlsx) file format.

2.引入依赖

需要引入两个包,maven地址如下:
代码如下(示例,version 3.9):

<dependency>
    <groupId>org.apache.poigroupId>
    <artifactId>poiartifactId>
    <version>3.9version>
dependency>


<dependency>
    <groupId>org.apache.poigroupId>
    <artifactId>poi-ooxmlartifactId>
    <version>3.9version>
dependency>

【maven 其他版本地址:https://mvnrepository.com/search?q=org.apache.poi】


3.核心类

表格如下(示例):

类名 描述
Workbook 工作簿超类
Sheet 标签页超类
Row 行超类
Cell 单元格超类

3.1 工作簿类 Workbook

【描述】创建或维护Excel工作簿的所有类的超接口,Workbook,属于org.apache.poi.ss.usermodel包。其下有两个实现类:

  • HSSFWorkbook:有读取【.xls】文件格式和写入Microsoft Excel文件的方式。它与微软OffIC侧97 -2003版本兼容
  • XSSFWorkbook:有读写Microsoft Excel和Open Office 的xml文件的格式【.xls】或【.xlsx】的方法。它与MS-Office 版本2007或更高兼容。
  • 注意:在使用时,请根据Excel版本进行选择。
HSSFWorkbook()
HSSFWorkbook(java.io.InputStream s)
XSSFWorkbook()
XSSFWorkbook(java.io.File file)
XSSFWorkbook(java.io.InputStream is)

3.2 标签页类 Sheet

【描述】HSSFSheet和XSSFSheet是Sheet的实现类,通过Workbook获取:

workbook.createSheet();
workbook.createSheet(String sheetName);

3.3 行类 Row

【描述】HSSFRow和XSSFRow是Row的实现类,通过Sheet方法获取:

sheet.createRow(int rownum); // 0~65535

3.4 单元格类 Cell

【描述】HSSFCell和XSSFCell类是Cell的实现类,通过Row的方法获取:

row.createCell(int column); // 0~255
row.createCell(int column, int type); // 0~255

4. 读取和创建

【思路】:首先,理解一下一个Excel的文件的组织形式,一个Excel文件对应于一个workbook(HSSFWorkbook/XSSFWorkbook),一个workbook可以有多个sheet(HSSFSheet/XSSFSHeet)组成,一个sheet是由多个row(HSSFRow/XSSFRow)组成,一个row是由多个cell(HSSFCell/XSSFCell)组成。

4.1 读取

【描述】读取当前路径下已经存在的【.xlsx】文件(因为使用的工作簿类是 XSSFWorkbook)

public static void main(String args[])throws Exception
   { 
      File file = new File("openworkbook.xlsx");
      FileInputStream fIP = new FileInputStream(file);
      
      XSSFWorkbook workbook = new XSSFWorkbook(fIP);
      if(file.isFile() && file.exists())
      {
         System.out.println(
         "openworkbook.xlsx file open successfully.");
      }
      else
      {
         System.out.println(
         "Error to open openworkbook.xlsx file.");
      }
   }

4.2 创建

【描述】创建一个学生成绩管理Excel文件到当前项目路径下,Excel数据如图4-2所示:

快速上手 Apache-POI【操作微软office,主要是excel】_第1张图片

代码如下(示例):

/**
     * 创建一个学生信息excel文件
     *
     * @param excelName excel标签页名称 
     * @date Created in 10:25 2020-12-29
     * @vsersion v1
     */
    public void createExcel(String excelName) {
        try {
            // 1.创建一个excel工作簿对象
            HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
            // 2.创建一个excel工作页对象(一个工作簿有多个工作页)
            HSSFSheet sheet = hssfWorkbook.createSheet("学生信息"); //当前写死, excelName外部传入
            // 3.创建excel第一行对象
            HSSFRow row1 = sheet.createRow(0);
            // 4.创建excel第一行单元格对象
            HSSFCell cell1 = row1.createCell(0);
            // 设置单元格内容
            cell1.setCellValue("学员考试成绩一览表");
            // 合并单元格
            sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3));

            // 学生主体信息
            // 1.主体头部信息
            HSSFRow row2 = sheet.createRow(1);
            row2.createCell(0).setCellValue("姓名");
            row2.createCell(1).setCellValue("班级");
            row2.createCell(2).setCellValue("笔试成绩");
            row2.createCell(3).setCellValue("机试成绩");

            // 2.学生信息
            HSSFRow row3 = sheet.createRow(2);
            row3.createCell(0).setCellValue("李明");
            row3.createCell(1).setCellValue("As178");
            row3.createCell(2).setCellValue("87");
            row3.createCell(3).setCellValue("78");

            HSSFRow row4 = sheet.createRow(3);
            row4.createCell(0).setCellValue("张飞");
            row4.createCell(1).setCellValue("As255");
            row4.createCell(2).setCellValue("78");
            row4.createCell(3).setCellValue("90");

            HSSFRow row5 = sheet.createRow(4);
            row5.createCell(0).setCellValue("王菲");
            row5.createCell(1).setCellValue("As336");
            row5.createCell(2).setCellValue("82");
            row5.createCell(3).setCellValue("69");

            // 使用字节输出流,输入excel文件
            FileOutputStream out = new FileOutputStream(new File(excelName + ".xls"));
            hssfWorkbook.write(out);
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

总结

快速上手 Apache-POI【操作微软office,主要是excel】_第2张图片
需要进行,单元格样式操作,如【合并单元格、颜色、字体】等时,请看这里:
【说明】这个是转载
https://blog.csdn.net/ethan_10/article/details/80335350

你可能感兴趣的:(POI,java,poi,excel)