JAVA 使用POI读取文档

前言:工作时总会用到一个Excel工具类来完成对EXCEL的导入和导出,傻瓜式的强大工具类让我潦草地使用API调用,但实际上POI对Excel是如何操作的并不明白,换个项目或者架构就不知道如何用POI读取EXCEL了,又或者复杂的EXCEL表样式不会导出,因此决定学习记录一下。

目录

POI是什么?

使用前提

POI包结构

从Excel文件读取数据

从Excel文件写入数据

正式读写Excel中数据

 读取Excel文档(待更新)


 

POI是什么?

Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件。这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Office文件的开源库。它包含类和方法对用户输入数据或文件到MS Office文档进行解码。

使用前提

引入POI依赖,其中POI-OOXML是POI的升级版本,提供了XSSF对象,而POI提供操作EXCEL的对象是HSSF。

(因为网上教程有只导入POI依赖的,然后发现不提供XSSFworkbook的对象,所以看了看区别)

HSSF:Excel97-2003版本,扩展名为.xls。一个sheet最大行数65536,最大列数256。

XSSF:Excel2007版本开始,扩展名为.xlsx。一个sheet最大行数1048576,最大列数16384。

        
            org.apache.poi
            poi
            3.17
        
        
            org.apache.poi
            poi-ooxml
            3.17
        

POI包结构

HSSF提供读写Microsoft Excel XLS格式档案的功能。

XSSF提供读写Microsoft Excel OOXML XLSX格式档案的功能。

从Excel文件读取数据

POI API Documentation  POI API文档 可参阅

Busy Developers' Guide to HSSF and XSSF Features 快速指南

Poi是如何操作Excel文件的?

Poi封装了XSSFworkbook工作簿对象,也就是如图所示整个excel文档,XSSFSheet工作表对象,也就是下方sheet,一个Excel文档由一个个sheet组成。每一行数据则是Row对象,每个单元格的对象则是Cell对象。

JAVA 使用POI读取文档_第1张图片

 从Excel文档中读取数据的步骤:

  1. 创建工作簿
  2. 获取工作表
  3. 遍历工作表获得行对象
  4. 遍历行对象获取单元格对象
  5. 获得单元格中的值

我在本地创建一个简单的excel文档,试着用代码读取,不过用代码读取的时候需要关闭文档,否则会抛出异常:

java.io.FileNotFoundException: C:\Users\Administrator\Documents\test2.xlsx (另一个程序正在使用此文件,进程无法访问。)

JAVA 使用POI读取文档_第2张图片

/**
 * @author Claw
 * @date 2022/1/4 21:13.
 */
public class readDemo {

    public static void main(String[] args) {
        // 创建工作簿对象
        XSSFWorkbook xssfWorkbook = null;
        try {
            xssfWorkbook = new XSSFWorkbook("C:\\Users\\Administrator\\Documents\\test2.xlsx");
            // 获取工作表 getSheet 指定sheet名字获取
            //  XSSFSheet sheet = xssfWorkbook.getSheet("sheet1");
            // 获取工作表 getSheetAt 从第一个sheet获取,一般用这个
            XSSFSheet sheet = xssfWorkbook.getSheetAt(0);
            // 获取行
            for (Row cells : sheet) {
                // 获取单元格
                for (Cell cell : cells) {
                    // 获取单元格内容 假设此时单元格内容都是文本格式,用getStringCellValue获取
                    String value = cell.getStringCellValue();
                    System.out.println(value);
                }
            }
            xssfWorkbook.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

简单读取EXCEL文件就完成了:

JAVA 使用POI读取文档_第3张图片

从Excel文件写入数据

  1. 创建工作簿
  2. 创建工作表
  3. 创建行
  4. 为单元格赋值
  5. 通过输出流将对象输出到磁盘

通过Poi对象对Excel写入的例子,我们就能明白,对数据进行EXCEL导出,无非就是创建XSSFWorkbook对象,通过XSSFWorkbook对象创建sheet(),再通过sheet创建row(行),通过row创建cell(单元格)的过程。

public class writeDemo {
    public static void main(String[] args) {
        // 创建工作簿
        XSSFWorkbook workbook = new XSSFWorkbook();
        // 创建工作表
        XSSFSheet sheet = workbook.createSheet();
        // 创建行 第一行
        XSSFRow row = sheet.createRow(0);
        // 创建单元格
        row.createCell(0).setCellValue("puppyCoding");
        row.createCell(1).setCellValue("studying");
        row.createCell(2).setCellValue("how to use poi");
        // 创建行 第二行
        XSSFRow row2 = sheet.createRow(1);
        row2.createCell(0).setCellValue("puppyCoding");
        row2.createCell(1).setCellValue("studying");
        row2.createCell(2).setCellValue("how to use poi");
        try {
            // 输出流
            FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\Administrator\\Documents\\writeDemo1.xlsx");
            workbook.write(fileOutputStream);
            fileOutputStream.flush();
            // 释放资源
            fileOutputStream.close();
            workbook.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

正式读写Excel中数据

Excel文档如图所示:

JAVA 使用POI读取文档_第4张图片

 读取Excel文档(待更新)

你可能感兴趣的:(Java,java,开发语言,后端)