Apache POI细讲入门案例

什么是POI

Apache POI是Apache软件基金会的开源项目,由Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java语言操作Microsoft Office的功能。

Apache POI是目前最流行的操作Microsoft Office的API组件,借助POI可以方便的完成诸如:数据报表生成,数据批量上传,数据备份等工作。

Excel报表是一种最常见的报表需求。Excel报表开发一般分为两种形式:

  1. 为了方便操作,基于Excel的报表批量上传数据
  2. 通过java代码生成Excel报表。

Excel介绍

目前世面上的Excel分为两个大的版本Excel2003和Excel2007及以上两个版本;

两者之间的区别如下:

Excel2003是一个特有的二进制格式,其核心结构是复合文档类型的结构,存储数据量较小;Excel2007 的核心结构是 XML 类型的结构,采用的是基于 XML 的压缩方式,使其占用的空间更小,操作效率更高。

ApachePOI 入门案例

添加依赖

<dependencies>
        <!--2003或以下-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.0.1</version>
        </dependency>
        <!--2007或以上-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.0.1</version>
        </dependency>
        <!--2007或以上-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>4.0.1</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

编写获取excel测试类

注意:getSheet(“是左下角excel模板名称”)如下:

import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Test;

import java.io.FileInputStream;
import java.io.FileOutputStream;
public class ApachePOI {

    /**
     * 2003或以下:HSSFWorkbook
     *   读取数据
     */
    @Test
    public void test1() throws Exception {

        //1.读取工作簿
        //1.1 读取文件流
        FileInputStream inputStream = new FileInputStream("d:/上传货物模板2.xls");

        HSSFWorkbook workbook = new HSSFWorkbook(inputStream);

        //2.读取工作单
        HSSFSheet sheet = workbook.getSheet("ddd");

        //3.读取行
        HSSFRow row = sheet.getRow(0);

        //4.读取列
        System.out.println(row.getCell(1).getStringCellValue());
        System.out.println(row.getCell(2).getStringCellValue());

    }

    /**
     * 2007或以上: XSSFWorkbook
     *   读取数据
     */
    @Test
    public void text02() throws Exception {
        //1.读取工作簿
        //1.1 读取文件流
        FileInputStream inputStream = new FileInputStream("d:/上传货物模板.xlsx");

        XSSFWorkbook workbook = new XSSFWorkbook(inputStream);

        //2.读取工作单
        XSSFSheet sheet = workbook.getSheet("ddd");

        //3.读取行
        XSSFRow row = sheet.getRow(0);

        //4.读取列
        System.out.println(row.getCell(1).getStringCellValue());
        System.out.println(row.getCell(2).getStringCellValue());

    }
}

编写写入excel测试类

import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Test;

import java.io.FileInputStream;
import java.io.FileOutputStream;

public class ApachePOI {

    /**
     * 2003或以下:HSSFWorkbook
     *   写入
     */
    @Test
    public void text03() throws Exception {
        //1.创建工作簿
        HSSFWorkbook workbook = new HSSFWorkbook();

        //2.创建工作单
        HSSFSheet sheet = workbook.createSheet("学生表");

        //3.创建行
        HSSFRow row1 = sheet.createRow(0);
        HSSFRow row2 = sheet.createRow(1);

        //4.创建列,设置列的内容
        row1.createCell(0).setCellValue("学生名字");
        row1.createCell(1).setCellValue("学生年龄");
        row2.createCell(0).setCellValue("小仓");
        row2.createCell(1).setCellValue("18");

        //5.把工作簿写出到硬盘中(如果没有该文件将自动创建)
        workbook.write(new FileOutputStream("d:/student.xls"));

    }


    /**
     * 2007或以上: XSSFWorkbook
     *   写入
     */
    @Test
    public void text04() throws Exception {
        //1.创建工作簿
        XSSFWorkbook workbook = new XSSFWorkbook();

        //2.创建工作单
        XSSFSheet sheet = workbook.createSheet("学生表");

        //3.创建行
        XSSFRow row1 = sheet.createRow(0);
        XSSFRow row2 = sheet.createRow(1);

        //4.创建列,设置列的内容
        row1.createCell(0).setCellValue("学生姓名");
        row1.createCell(1).setCellValue("学生年龄");
        row2.createCell(0).setCellValue("小苍");
        row2.createCell(1).setCellValue("18");

        //5.把工作簿写出到硬盘中(如果没有该文件将自动创建)
        workbook.write(new FileOutputStream("d:/student2.xlsx"));

    }


}

希望这边文章对您有帮助!

 

本站资源除特别声明外,转载文章请声明文章出处
东泰博客 » Apache POI细讲入门案例

发表评论

东泰博客更注重质量