• Apache POI简介


    三十二、Apache POI

    32.1 介绍

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

    一般情况下,POI都是用于操作Excel文件。

    Apache POI 的应用场景:

    • 银行网银系统导出交易明细

    • 各种业务系统导出Excel报表

    • 批量导入业务数据

    32.2 入门案例

    Apache POI 既可以将数据写入Excel文件,也可以读取Excel文件中的数据,接下来分别进行实现。

    Apache POI的maven坐标:

    <dependency>
        <groupId>org.apache.poigroupId>
        <artifactId>poiartifactId>
        <version>3.16version>
    dependency>
    <dependency>
        <groupId>org.apache.poigroupId>
        <artifactId>poi-ooxmlartifactId>
        <version>3.16version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    32.2.1 将数据写入Excel文件

    1). 代码开发

    package com.sky.test;
    
    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.FileNotFoundException;
    import java.io.FileOutputStream;
    
    public class POITest {
        /**
         * 通过POI创建Excel 文件并且写入文件内容
         */
        public static void write() throws Exception {
            //在内存中创建一个Excel文件
            XSSFWorkbook excel = new XSSFWorkbook();
            //在Excel文件中创建一个Sheet页
            XSSFSheet sheet = excel.createSheet("info");
            //在Sheet中创建一个行对象,rownum编号从0开始
            XSSFRow row = sheet.createRow(0);
            //创建单元格并且写入文件内容
            row.createCell(0).setCellValue("姓名");
            row.createCell(1).setCellValue("城市");
            //创建一个新行
            row = sheet.createRow(1);
            row.createCell(0).setCellValue("张三");
            row.createCell(1).setCellValue("北京");
    
            row = sheet.createRow(2);
            row.createCell(0).setCellValue("李四");
            row.createCell(1).setCellValue("南京");
    
            //通过输出流将内存中的Excel文件写入到磁盘
            FileOutputStream out = new FileOutputStream(new File("D:\\info.xlsx"));
            excel.write(out);
            //关闭资源
            out.close();
            excel.close();
        }
    
        public static void main(String[] args) throws Exception {
            write();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    2). 实现效果

    在D盘中生成info.xlsx文件,创建名称为info的Sheet页,同时将内容成功写入。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    32.2.2 读取Excel文件中的数据

    1). 代码开发

    /**
     * 通过POI读取Excel文件中的内容
     */
    public static void read() throws Exception {
        InputStream inputStream = new FileInputStream(new File("D:\\info.xlsx"));
        //读取磁盘上已经存在的Excel文件
        XSSFWorkbook excel = new XSSFWorkbook(inputStream);
        //读取Excel文件中的第一个Sheet页
        XSSFSheet sheet = excel.getSheetAt(0);
        //获取Sheet中最后一行的行号
        int lastRowNum = sheet.getLastRowNum();
        for (int i=0;i<=lastRowNum;i++){
            //获得某一行
            XSSFRow row = sheet.getRow(i);
            //获得单元格对象
            String cellValue1 = row.getCell(0).getStringCellValue();
            String cellValue2 = row.getCell(1).getStringCellValue();
            System.out.println(cellValue1+" "+cellValue2);
        }
        //关闭资源
        inputStream.close();
        excel.close();
    }
    
    public static void main(String[] args) throws Exception {
        //write();
        read();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    2). 实现效果

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 相关阅读:
    Redis学习笔记(下):持久化RDB、AOF+主从复制(薪火相传,反客为主,一主多从,哨兵模式)+Redis集群
    跨站脚本攻击XSS介绍、原理、分类、利用、防御
    springboot01
    C++设计模式_06_Decorator 装饰模式
    LeetCode第一题完整代码
    第六章《类的高级特性》第1节:static关键字的使用
    VR全景云端看车,让你享受不一样的购车体验
    飞桨(PaddlePaddle)数据加载教程
    SCConv:用于特征冗余的空间和通道重构卷积
    苏州科技大学计算机考研资料汇总
  • 原文地址:https://blog.csdn.net/m0_71229255/article/details/134564170