Apache POI Excel数据驱动

转载 2018年04月16日 01:07:29

原文地址https://blog.csdn.net/u012410733/article/details/54233725

相信在项目中,对数据进行动态导出这是一个比较常见的功能。对于数据导出我们可以使用Apache-POI这个框架来帮我来进行Excel的写入与读取。下面就用代码来实现Apache POI写入与读取excel文件。

1、Apache POI基本概念

下面将简单的描述一下当进行Excel读取与写入的时候要使用到的基本类。 
1. HSSF 为前缀的类名表示操作的是Microsoft Excel 2003文件。 
2. XSSF 为前缀的类名表示操作的是Microsoft Excel 2007或以后的版本 
3. XSSFWorkbook 和 HSSFWorkbook表示一个Excel的Workbook. 
4. HSSFSheet 和 XSSFSheet 表示一个Excel的Worksheet. 
5. Row 表示一个Excel行 
6. Cell 表示当前Row中一个Cell.

2、下载Apache POI

在项目中是使用Maven来管理Jar依赖的,所以在Pom.xml添加以下依赖:

<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi-ooxml</artifactId>
  <version>3.15</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

3、写入一个Excel文件

下面的代码将会简单的展示使用Apache POI写入一个Excel文件。数据将会写入到XSSFWorkbook对象中。

ApachePOIExcelWrite.java

package com.weimob.o2o.carl.poi;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class ApachePOIExcelWrite {

    private static final String FILE_NAME = "/tmp/MyFirstExcel.xlsx";

    public static void main(String[] args) {
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet("Data types in Java");
        Object[][] dataTypes = {
                {"DataType", "Type", "Size(in bytes)"},
                {"int", "Primitive", 2},
                {"float", "Primitive", 4},
                {"double", "Primitive", 8},
                {"char", "Primitive", 1},
                {"String", "Non-Primitive", "No fixed size"}
        };

        int rowNum = 0;
        System.out.println("Creating excel");
        for(Object[] dataType : dataTypes){
            Row row = sheet.createRow(rowNum++);
            int colNum = 0;
            for(Object field : dataType){
                Cell cell = row.createCell(colNum++);
                if(field instanceof String){
                    cell.setCellValue((String) field);
                } else if (field instanceof Integer){
                    cell.setCellValue((Integer) field);
                }
            }
        }
        try {
            FileOutputStream outputStream = new FileOutputStream(FILE_NAME);
            workbook.write(outputStream);
            workbook.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("Done");

    }

}
  • 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
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55

你将会在你项目所在的磁盘中的tmp文件夹中得到以下的excel文件:

这里写图片描述

4、读取一个Excel文件

下面的代码展示如何使用Apache POI读取Excel文件。getCellTypeEnum方法在 3.15 中不推荐使用并且会在 4.0 版本中将会改名为:getCellType.

ApachePOIExcelRead.java

package com.weimob.o2o.carl.poi;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Iterator;

public class ApachePOIExcelRead {

    private static final String FILE_NAME = "/tmp/MyFirstExcel.xlsx";

    public static void main(String[] args) {
        try {
            FileInputStream excelFile = new FileInputStream(new File(FILE_NAME));
            Workbook workbook = new XSSFWorkbook(excelFile);
            Sheet dataTypeSheet = workbook.getSheetAt(0);
            Iterator<Row> iterator = dataTypeSheet.iterator();
            while(iterator.hasNext()){
                Row currentRow = iterator.next();
                Iterator<Cell> cellIterator = currentRow.iterator();
                while(cellIterator.hasNext()){
                    Cell currentCell = cellIterator.next();
                    //getCellTypeEnum shown as deprecated for version 3.15
                    //getCellTypeEnum ill be renamed to getCellType starting from version 4.0
                    if(currentCell.getCellTypeEnum() == CellType.STRING){
                        System.out.print(currentCell.getStringCellValue() + "--");
                    } else if(currentCell.getCellTypeEnum() == CellType.NUMERIC){
                        System.out.print(currentCell.getNumericCellValue() + "--");
                    }
                }
                System.out.println();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
  • 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

你的控制台将会输出以下代码:

这里写图片描述


selenium Excel数据驱动测试(基于 TestNG Apache POI)

以excel文件为数据源进行数据驱动测试
  • egg1231
  • egg1231
  • 2017-04-07 17:37:06
  • 950

数据驱动测试三:使用TestNG、Apache POI和Excel文件进行数据驱动

一、测试环境准备 1、从http://www.apache.org/dyn/closer.cgi/poi/release/bin/poi-bin/poi-bin-3.14.zip下载POI的压缩包文...
  • heart_1014
  • heart_1014
  • 2016-07-24 21:46:07
  • 2290

selenium webdriver学习--利用POI实现数据驱动

比较浅的数据驱动练习
  • woiangaoiowe
  • woiangaoiowe
  • 2017-03-23 11:07:51
  • 285

Apache POI实现Excel文件导出

最近开发excel导入导出功能,使用的是Apache的POI技术POI提供了很多对Microsoft Office的功能,本文仅仅讲解POI的Excel导出功能版本如下: org...
  • qq_17214237
  • qq_17214237
  • 2017-10-25 19:17:43
  • 241

使用Apache POI,实现导出Excel的功能

Apache POI是用Java编写的免费开源的Java API,它提供了对Microsoft Office格式档案读和写的功能。 Apache POI源码和库(JAR包)的官方下载地址是:http...
  • gaojinshan
  • gaojinshan
  • 2014-06-12 10:18:51
  • 3277

seleniumWebDriver自动化测试框架_03TestNG和ApachePOIExcel文件数据驱动测试

seleniumWebDriver自动化测试框架_03TestNG和ApachePOIExcel文件数据驱动测试 1.遇到的问题   a.报错信息:FAILED: f java.lang.NoC...
  • lvbu_abcd
  • lvbu_abcd
  • 2017-03-09 01:18:53
  • 298

Java使用Apache poi 操作Excel-基本概念与使用

通过POI简化了EXCEL的操作,其中POI提供的WorkBook, spreadsheet,Row,Cell及其实现类来完成对Excel中对应部分(Excel文件,电子表格,行,单元格)的操作(读取...
  • Revivedsun
  • Revivedsun
  • 2017-01-02 21:50:07
  • 1813

Apache POI导出Excel

package com.bjpowernode.crm.workbench.activity.web.controller; import java.io.IOException; import j...
  • Aurora_sss
  • Aurora_sss
  • 2017-05-25 20:32:24
  • 165

Apache POI生成Excel表格并下载的一些注意事项

需求:从后台读取数据生成一张如下图的Excel表格,并提供Excel下载功能。 生成的Excel表格格式如下: 实现步骤: 一、通过Apache POI生成Excel: 1、请求链接为:...
  • hlbt0112
  • hlbt0112
  • 2016-01-15 15:15:33
  • 641

使用Apache POI生成和解析Excel文件

概述   Excel是我们平时工作中比较常用的用于存储二维表数据的,JAVA也可以直接对Excel进行操作,分别有jxl和poi,2种方式。   HSSF is the POI Proje...
  • m0_37327416
  • m0_37327416
  • 2017-05-23 16:24:14
  • 636
收藏助手
不良信息举报
您举报文章:Apache POI Excel数据驱动
举报原因:
原因补充:

(最多只允许输入30个字)