【POI】Apache POI使用详解

文章目录

  • 【前言】
    • 一、简介
    • 二、POI常用类
    • 三、案例
      • (一)导入jar包
      • (二)操作Excel
        • (1)从Excel文件读数据
          • 方式一:
            • 运行结果:
          • 方式二:
            • 运行结果:
        • (2)从Excel文件写数据
            • 运行结果:


【前言】

今天介绍POI编程!

一、简介

Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office(Excel、WORD、PowerPoint、Visio等)格式档案读和写的功能。
官方主页: http://poi.apache.org/index.html
API文档: http://poi.apache.org/apidocs/index.html

二、POI常用类

HSSF - 提供读写Microsoft Excel XLS格式档案的功能
XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能 (本文案例使用)
HWPF - 提供读写Microsoft Word DOC格式档案的功能
HSLF - 提供读写Microsoft PowerPoint格式档案的功能
HDGF - 提供读Microsoft Visio格式档案的功能
HPBF - 提供读Microsoft Publisher格式档案的功能
HSMF - 提供读Microsoft Outlook格式档案的功能

三、案例

(一)导入jar包

maven坐标:

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

(二)操作Excel

核心对象:

XSSFWorkbook:工作簿
XSSFSheet:工作表
XSSFRow:行
XSSFCell:单元格

(1)从Excel文件读数据

方式一:
 //读操作一
    @Test
    public void testRead() throws IOException {
     
        //1:创建工作蒲
        XSSFWorkbook workbook = new XSSFWorkbook("E:\\\\hello.xlsx");

        //2:获取工作表:既可以根据工作表的顺序获取,也可以根据工作表的名称获取
        XSSFSheet sheet = workbook.getSheetAt(0);

        //3:获取行:遍历工作表获得行对象
        for (Row row:sheet){
     
            //4:获取单元格:遍历行对象获取单元格对象
            for (Cell cell:row){
     
                //5:获取单元格数据
                //注意:数字类型,需要修改excel单元格的类型,否则报错。
                String v = cell.getStringCellValue();
                System.out.println("v="+v);
            }
        }
        //6:关闭对象
        workbook.close();
    }

运行结果:

【POI】Apache POI使用详解_第1张图片

方式二:

还有一种方式就是获取工作表最后一个行号,从而根据行号获得行对象,通过行获取最后一个单元格索引,从而根据单元格索引获取每行的一个单元格对象,代码如下:

//读操作二
    @Test
    public void testRead2() throws Exception{
     
        //1:创建工作蒲
        XSSFWorkbook workbook = new XSSFWorkbook("E:\\hello.xlsx");

        //2:获取工作表:既可以根据工作表的顺序获取,也可以根据工作表的名称获取
        XSSFSheet sheet = workbook.getSheetAt(0);

        //3:获取行:
        int lastRowNum = sheet.getLastRowNum();

        for (int i = 0; i <= lastRowNum; i++) {
     
            //根据行号获取行对象
            XSSFRow row = sheet.getRow(i);
			// 再获取单元格对象	
            short lastCellNum = row.getLastCellNum();
            for (int j = 0; j < lastCellNum; j++) {
     
              // 获取单元格对象的值
                String value = row.getCell(j).getStringCellValue();
                System.out.println("value="+value);
            }
        }
        //6:关闭对象
        workbook.close();
    }
运行结果:

【POI】Apache POI使用详解_第2张图片

(2)从Excel文件写数据

使用POI可以在内存中创建一个Excel文件并将数据写入到这个文件,最后通过输出流将内存中的Excel文件下载到磁盘

//写操作
    @Test
    public void testWrite() throws IOException{
     
    //在内存中创建一个Excel文件
        XSSFWorkbook workbook = new XSSFWorkbook();
         //创建工作表,指定工作表名称
        XSSFSheet sheet = workbook.createSheet("测试");
        
		//创建行,0表示第一行
        XSSFRow row = sheet.createRow(0);
        //创建单元格,0表示第一个单元格
        row.createCell(0).setCellValue("姓名");
        row.createCell(1).setCellValue("性别");
        row.createCell(2).setCellValue("年龄");

        XSSFRow row1 = sheet.createRow(1);
        row.createCell(0).setCellValue("张三");
        row.createCell(1).setCellValue("男");
        row.createCell(2).setCellValue("11");

        XSSFRow row2 = sheet.createRow(2);
        row.createCell(0).setCellValue("李四");
        row.createCell(1).setCellValue("女");
        row.createCell(2).setCellValue("22");

		//通过输出流将workbook对象下载到磁盘
        FileOutputStream out = new FileOutputStream("E:/测试写表.xlsx");
        workbook.write(out);
        out.flush();	//刷新
        out.close();	//关闭
        workbook.close();
    }
运行结果:

【POI】Apache POI使用详解_第3张图片


感谢阅读~

你可能感兴趣的:(▶后端,#,【Java】,apache,java,maven,poi,后端)