前言
在数据仓库中,ETL最基础的步骤就是从数据源抽取所需的数据,这里所说的数据源并非仅仅是指数据库,还包括excel、csv、xml等各种类型的数据接口文件,而这些文件中的数据不一定是结构化存储的,比如各种各样的报表文件,往往是一些复杂的表格结构,其中不仅有我们需要的数据,还有一些冗余的、无价值的数据,这时我们就无法直接用一般数据加载工具直接读取入库了。也许你会想,数据源导出文件前先处理好数据就行了。然而,实际开发中数据源往往是多个的,而且涉及到不同的部门甚至公司,这其间难免会出现各种麻烦,甚至有些数据文件还是纯手工处理的,不一定能给到你满意的数据格式。所以我们不讨论谁该负责转换的问题,这里主要介绍如何使用Apache POI来从Excel数据文件中读取我们想要的数据,以及用Bean Validation对数据内容按照预定的规则进行校验。
文章要点:
- Apache POI是什么
- 如何使用Apache POI读取Excel文件
- 使用Bean Validation进行数据校验
- Excel读取工具类
- 使用实例
Apache POI是什么
Apache POI是用Java编写的免费开源的跨平台的Java API,提供API给Java程式对Microsoft Office格式档案进行读和写的操作。
如何使用Apache POI处理Excel文件
1、导入Maven依赖
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-scratchpad</artifactId> <version>3.17</version> </dependency>2、创建Workbook实例
这里需要注意的是Excel文档的版本问题,Excel2003及以前版本的文档使用HSSFWorkbook对象,Excel2007及之后版本使用HSSFWorkbook对象
// Excel2003及以前版本 Workbook workbook = new XSSFWorkbook(new FileInputStream(path)); // Excel2007及之后版本 Workbook workbook = new HSSFWorkbook(new FileInputStream(path));3、获取Sheet表格页对象
Sheet是Excel文档中的工作簿即表格页面,读取前要先找到数据所在页面,可以通过标签名或者索引的方式获取指定Sheet对象
// 按索引获取 Sheet sheet = workbook.getSheetAt(index); // 按标签名获取 Sheet sheet = workbook.getSheet(label);4、获取Cell单元格对象
