apache POI介绍 在JAVA中操作三大办公软件

apache POI介绍 在JAVA中操作三大办公软件

Apache POI(Poor Obfuscation Implementation,简称 POI)是一个开源的Java库,它提供了对Microsoft Office格式文件的读写支持。Apache POI使得开发者可以在Java应用程序中操作Microsoft Office文档,如Excel电子表格、Word文档、PowerPoint演示文稿等。
Apache POI(Apache POI 是 Apache 项目的一部分,用于处理 Microsoft Office 格式文件)在许多应用场景中非常有用,以下是四个典型的应用场景:

应用场景

  • 报表自动化生成
    在企业中,经常需要生成各种报表,如财务报表、销售报表等。使用 Apache POI,可以自动化地从数据库读取数据,并将其写入 Excel 文件中,从而简化报表生成流程,减少人工操作的错误。

  • 数据分析和处理
    数据分析是另一个常见的应用场景。Apache POI 可以读取包含数据的 Excel 文件,将数据导入到数据分析工具或应用程序中进行进一步分析和处理。此外,分析结果也可以写回 Excel 文件中,方便分享和报告。

  • 文档转换服务
    在需要将 Word 文档或 Excel 电子表格转换成其他格式(如 PDF)的场景中,Apache POI 可以读取原始文档的内容,并使用其他库(如 Apache PDFBox)生成所需格式的文件。

  • Web 应用程序中的 Office 文件处理
    在 Web 应用程序中,用户可能需要上传、编辑或下载 Office 格式的文件。Apache POI 可以在服务器端处理这些文件,无需安装 Microsoft Office。例如,一个在线协作平台可能允许用户共同编辑一个 Excel 电子表格,而所有处理都在服务器端通过 Apache POI 完成。

  • 批量文件处理
    在需要处理大量 Office 文件的场景中,如批量更新 Excel 电子表格中的公式或格式,Apache POI 可以自动化这一过程,通过编程方式批量读取、修改和保存文件,大大提高效率。

  • 教育和培训材料的自动化生成
    在教育领域,可能需要根据学生的成绩或其他数据自动生成个性化的报告或反馈。Apache POI 可以用来读取学生数据,生成定制的 Word 文档或 Excel 电子表格,然后分发给学生或教师。

这些场景展示了 Apache POI 在不同领域的应用潜力,从企业自动化到 Web 服务,再到教育,Apache POI 提供了一个强大的工具来处理 Office 格式的文件。

入门案例

  1. 导入maven坐标
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>3.16</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>3.16</version>
            </dependency>
  1. 向excel表中写入数据
package com.sky;

import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;

public class TestPOI {

    public static void writer() throws Exception{

        //在内存中创建一个excel文件
        XSSFWorkbook excel = new XSSFWorkbook();
        //在excel文件中创建一个sheet页
        XSSFSheet sheetTest = excel.createSheet("sheetTest");
        //在excel中创建行对象   和数组一样 下表为0
        XSSFRow row = sheetTest.createRow(1);
        //创建单元格  并且写入文件内容
        row.createCell(1).setCellValue("姓名");
        row.createCell(2).setCellValue("年龄");
        row.createCell(3).setCellValue("性别");

        //创建一个新行
        row = sheetTest.createRow(2);
        row.createCell(1).setCellValue("张三");
        row.createCell(2).setCellValue("18");
        row.createCell(3).setCellValue("男");

        //创建一个新行
        row = sheetTest.createRow(3);
        row.createCell(1).setCellValue("李四");
        row.createCell(2).setCellValue("19");
        row.createCell(3).setCellValue("女");

        //创建一个新行
        row = sheetTest.createRow(4);
        row.createCell(1).setCellValue("王五");
        row.createCell(2).setCellValue("17");
        row.createCell(3).setCellValue("男");

        //通过输出流将内存中的excel文件写如到磁盘
        FileOutputStream fileOutputStream = new FileOutputStream("D:\\Test.xls");
        excel.write(fileOutputStream);

        //关闭资源
        fileOutputStream.close();
        excel.close();
    }

    public static void main(String[] args) throws Exception {
        writer();
    }
}

在这里插入图片描述
在这里插入图片描述

  1. 读取excel文件数据
package com.sky;

import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileOutputStream;

public class TestPOI {

    /**
     * 通过POI读取excel文件
     * @throws Exception
     */
    public static void read() throws Exception{
        //读取地盘上已经存在的excel文件
        XSSFWorkbook excel = new XSSFWorkbook(new File("D:\\Test.xls"));
        
        //读取excel文件中的第一个Sheet页
        XSSFSheet sheetAt = excel.getSheetAt(0);
        
        //获取sheet中最后一行的行号
        int lastRowNum = sheetAt.getLastRowNum();

        for (int i = 1; i <= lastRowNum; i++) {
            //获得某一行
            XSSFRow row = sheetAt.getRow(i);
            //获得单元格元素
            String stringCellValue = row.getCell(1).getStringCellValue();
            String stringCellValue1 = row.getCell(2).getStringCellValue();
            String stringCellValue2 = row.getCell(3).getStringCellValue();
            System.out.println(stringCellValue+" "+stringCellValue1+" "+stringCellValue2);
        }

        //关闭资源
        excel.close();

    }  

    public static void main(String[] args) throws Exception {
        read();
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值