快速掌握并使用Apache POI

Apache POI

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


简单使用

快速入门

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

        <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将数据写入到文件中

@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从文件中读取到内容

    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对象当中

相关推荐

  1. 快速掌握使用Apache POI

    2024-05-10 08:06:07       29 阅读
  2. 快速掌握React.js

    2024-05-10 08:06:07       32 阅读
  3. C#-剖析文件和流快速使用

    2024-05-10 08:06:07       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-10 08:06:07       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-10 08:06:07       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-10 08:06:07       82 阅读
  4. Python语言-面向对象

    2024-05-10 08:06:07       91 阅读

热门阅读

  1. Rust - TCP Server

    2024-05-10 08:06:07       30 阅读
  2. insert语句的锁

    2024-05-10 08:06:07       26 阅读
  3. PanguSync大数据量初始化脚本

    2024-05-10 08:06:07       28 阅读
  4. 【GoLang基础】切片和数组有什么区别?

    2024-05-10 08:06:07       25 阅读
  5. 深入了解 Stylus:简洁优雅的 CSS 预处理器

    2024-05-10 08:06:07       34 阅读
  6. 二维平移矩阵 (2D translate matrix)

    2024-05-10 08:06:07       34 阅读
  7. Excel解日期问题

    2024-05-10 08:06:07       32 阅读
  8. 探索利用 LineageLogger 获取hive的字段级血缘关系

    2024-05-10 08:06:07       41 阅读
  9. docker自定义网桥和容器的网络IP段

    2024-05-10 08:06:07       38 阅读
  10. 进度条(小程序)

    2024-05-10 08:06:07       34 阅读