快速掌握并使用Apache POI

Apache POI

Apache POl是一个处理Miscrosoft Ofice各种文件格式的开源项目。简单来说就是,我们可以使用 POI在 Java 程序中对Miscrosoft Office各种文件进行读写操作。


简单使用

快速入门

第一步:导入Apache POI的maven坐标:

java 复制代码
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
        </dependency>

如何使用POI操作Excel文件

我们先在一个目录下创建一个测试的test.xlsx文件
通过POI将数据写入到文件中

java 复制代码
@SpringBootTest
//使用POI操作Excel文件
public class POITest {
    /**
     * 通过POI创建excel文件并写入内容
     */
    public static void write() throws Exception{
        //在内存中创建一个Excel文件
        XSSFWorkbook excel = new XSSFWorkbook();
        //在Excel文件中创建一个Sheet页
        XSSFSheet sheet = excel.createSheet("info");
        //在Sheet页中创建行,参数行号下表是从0开始的
        XSSFRow row = sheet.createRow(1);
        //在指定行上创建单元格
        XSSFCell cell = row.createCell(1);
        //向单元格中写入内容
        cell.setCellValue("帅");
        //向第三个单元格写入数据
        row.createCell(2).setCellValue("真的帅");
        //通过输出流将内容写入到文件中,创建一个输出流
        FileOutputStream fileOutputStream = new FileOutputStream(new File("F:\\test.xlsx"));
        //通过Excel文件对象将输出流写入到文件中
        excel.write(fileOutputStream);
        //关闭资源
        fileOutputStream.close();
        excel.close(); 
    }
    public static void main(String[] args) throws Exception{
        write();
    }
}

这里创建Excel文件对象是在内存中创建的文件,最后结合输出流对象将文件写入到Excel文件当中

根据POI从文件中读取到内容

java 复制代码
    public static void read() throws Exception{
        //创建输入流,读取磁盘上已经存在的Excel文件
        FileInputStream fileInputStream = new FileInputStream(new File("F:\\test.xlsx"));
        XSSFWorkbook excel = new XSSFWorkbook(fileInputStream);
        //读取Excel文件中的第一个sheet页
        XSSFSheet sheet = excel.getSheet("info");
        //读取sheet页中的内容,首先应该得到有文字的最后一行的行号
        int lastRowNum = sheet.getLastRowNum();
        for (int i=1;i<=lastRowNum;i++)
        {
            XSSFRow row = sheet.getRow(i);
            String stringCellValue = row.getCell(1).getStringCellValue();
            String stringCellValue1 = row.getCell(2).getStringCellValue();
            System.out.println(stringCellValue+":"+stringCellValue1);
        }
        //关闭资源
        excel.close();
        fileInputStream.close();
    }

从文件中读就不能在内存中操作,需要将磁盘上的文件通过输入流的方式加载到Excel对象当中

相关推荐
沈健_算法小生2 小时前
Apache Kafka核心组件详解
分布式·kafka·apache
lang2015092816 小时前
Apache Ignite 的对等类加载(Peer Class Loading, P2P Class Loading)机制
apache·ignite
chen_note18 小时前
LAMP及其环境的部署搭建
linux·运维·mysql·php·apache·lamp·phpmyadmin
lang2015092818 小时前
Apache Ignite 与 Spring Boot 集成
spring boot·后端·apache·ignite
lang2015092819 小时前
如何使用 Apache Ignite 作为 Spring 框架的缓存(Spring Cache)后端
spring·缓存·apache·ignite
lang2015092821 小时前
Apache Ignite 的监控与指标(Monitoring and Metrics)
apache·ignite
lang201509281 天前
Apache Ignite 集群状态(Cluster States)
apache·ignite
谈不譚网安1 天前
Apache HTTP Server 2.4.50 路径穿越漏洞(CVE-2021-42013)
网络协议·http·apache
lang201509281 天前
Apache Ignite 的分布式锁Distributed Locks的介绍
apache·ignite
lang201509282 天前
关于 Apache Ignite 中 Job 调度(Job Scheduling)与冲突控制(Collision Control) 的机制说明
apache·ignite