欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-19 16:05:37
快速理清 Apache-POI【操作微软office,主要是excel】文章目录快速理清 Apache-POI【操作微软office,主要是excel】前言一、POI是什么?二、使用步骤1.核心组件介绍2.引入依赖3.核心类3.1 工作簿类 Workbook3.2 标签页类 Sheet3.3 行类 Row3.4 单元格类 Cell4. 读取和创建4.1 读取4.2 创建总结前言提示:需要对面向对象思想有一定了解。一、POI是什么?Apache POI - the Java API for M...

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


前言

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


一、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.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>

【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】

代码如下(示例):

/**
     * 创建一个学生信息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】
需要进行,单元格样式操作,如【合并单元格、颜色、字体】等时,请看这里:
【说明】这个是转载
https://blog.csdn.net/ethan_10/article/details/80335350

本文地址:https://blog.csdn.net/weixin_42045234/article/details/111921323

相关标签: POI java excel