Apache Poi实现excel解析
一、说明
1、本文通过使用 poi 工具解析 excel 表格数据,实现导入导出
2、excel目前有两种格式 2003版本的 excel.xls 与 2007版本的 excel.xlsx ,注意两种文件的后缀名不同
3、针对不同版本的 excel ,使用不同的类,xls结尾的实现 HSSFWorkbook类,xlsx的实现 XSSFWorkbook 类
4、实现过程每一步基本上都有注释,不明白的请留言
二 、实现过程如下
- 创建maven工程,添加依赖
<!-- 03版 表格 -->
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.1</version>
</dependency>
<!-- 07版 表格 -->
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
- 实现相应的类
/**
* apache poi demo测试
*/
public class PoiDemo {
public static void main(String[] args) throws Exception {
// 1、获取一个工作簿 根据 excel 文件获取
XSSFWorkbook workbook = new XSSFWorkbook("D:\\test.xlsx"); // 此处加载的是我本地使用测试excel文件
// 2、通过工作簿获取到一个sheet页
// workbook.getSheet("sheetName"); 这是通过 sheet 的名字获取sheet页
XSSFSheet sheet = workbook.getSheetAt(0);// 通过索引获取第几个sheet页
// 3、通过sheet页获取表格的内容,获取sheet页中每一行 和 每一个单元格
// 第一层循环,获取到表格的每一行
for (int rowNum = 0; rowNum <= sheet.getLastRowNum(); rowNum++) {
XSSFRow row = sheet.getRow(rowNum);
StringBuilder stringBuilder = new StringBuilder();
// 第二层循环,精准获取到每一个单元格
for (int cellNum = 0; cellNum < row.getLastCellNum(); cellNum++) {
// 现在精确获取到了每一个单元格
Cell cell = row.getCell(cellNum);
// 获取到每一个单元格的内容
if (cell != null) {
Object value = getCellValue(cell);
stringBuilder.append(value).append("-");
}
}
System.out.println(stringBuilder);
}
}
/**
* 获取单元格的数据
*
* @param cell 单元格
* @return
*/
public static Object getCellValue( Cell cell) {
// 对应于数据库,每一个字段的数据类型可能都不同
// 1、获取到单元格的属性,
CellType cellType = cell.getCellType();
// 2、通过单元格属性获取数据
Object value = null;
switch (cellType) {
case STRING:
value = cell.getStringCellValue();
break;
case BOOLEAN:
value = cell.getBooleanCellValue();
break;
case NUMERIC:
if (DateUtil.isCellDateFormatted(cell)){
// 日期格式
value = cell.getDateCellValue();
} else {
// 数字
value = cell.getNumericCellValue();
}
break;
case FORMULA:
value = cell.getCellFormula();
break;
default:
break;
}
return value;
}
}
- 本地测试文件

- 结果如下

- 若觉得写得还可以的话,请点击支持一下,你的支持是我继续写下去的动力
Apache Poi实现excel解析的更多相关文章
- 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据
1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...
- apache POI 导出excel相关方法
apache POI 操作excel无比强大.同时有操作word和ppt的接口. 下面讲解poi中常用方法. 1,设置列宽 HSSFSheet sheet = wb.getSheetAt(0); sh ...
- Java开发小技巧(六):使用Apache POI读取Excel
前言 在数据仓库中,ETL最基础的步骤就是从数据源抽取所需的数据,这里所说的数据源并非仅仅是指数据库,还包括excel.csv.xml等各种类型的数据接口文件,而这些文件中的数据不一定是结构化存储的, ...
- 使用Apache POI导出Excel小结--导出XLS格式文档
使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI ...
- 利用Apache POI操作Excel
最近在做接口,有个功能是利用Excel导入汽车发动机所需零件信息到线上系统中.简单回顾一下之前学过的用java操作Excel. 1.maven配置Apache POI pom.xml中配置POIjar ...
- 【Java】使用Apache POI生成和解析Excel文件
概述 Excel是我们平时工作中比较常用的用于存储二维表数据的,JAVA也可以直接对Excel进行操作,分别有jxl和poi,2种方式. HSSF is the POI Project's pure ...
- Java使用Apache POI进行Excel导入和导出
Manve依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --> <dependency> ...
- JAVA Apache POI 之sax 解析10万级大数量数据
第一步让我们来看看我们的大量数据的excel 文件 好的下面第二步看一下代码: package com.chinait.utils; /** * 写这个东西主要是最近做了一个联通的数据迁移工作,他们就 ...
- apache poi导出excel报表
Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能.POI为"P ...
随机推荐
- python selenium模块 css定位
selenium是python的非标准库,使用时需要下载安装 安装命令 pip install selenium selenium是python的自动化测试模块,可以模拟浏览器的行为 所以在使用之前 ...
- Laravel 分页 数据丢失问题解决
问题: to do list 中有32条数据,每页10条,共3页. 做完了一个事项之后,准备打卡,发现找不到这个事项. 数据库查询正常,有这一条数据. 原因: 发现是分页出了问题,第1页的数据和第2页 ...
- 数据结构(C语言版)---排序
1.排序:重排表中元素. 2.根据数据元素是否完全在内存中,将排序算法分为内部排序和外部排序两类. 3.插入排序:将一个待排序记录按关键字大小插入到前面已排好的子序列中,直到全部记录插入完成. 1)直 ...
- Linux C语言 检测文件是否存在
头文件 unistd.h ) { // file exists } else { // file doesn't exist } You can also use R_OK, W_OK, and X_ ...
- 显示 QStringList 的内容
QStringList s; s << "your" << "string" << "list"; ; ...
- [Windows]允许未签名的驱动
bcdedit.exe -set loadoptions ENABLE_INTEGRITY_CHECKS bcdedit.exe -set TESTSIGNING OFF https://social ...
- Spring Boot的exit code
文章目录 Spring Boot的exit code 自定义Exit Codes ExitCodeGenerator ExitCodeExceptionMapper ExitCodeEvent Spr ...
- 使用Spring Boot搭建你的第一个应用程序
文章目录 依赖配置 main程序配置 MVC配置 安全配置 存储 Web 页面和Controller 异常处理 测试 结论 Spring Boot是Spring平台的约定式的应用框架,使用Spring ...
- Android xUtils3.0使用手册(二) - 数据库操作
步骤: (1). 创建数据表: (2). DaoConfig 获取数据库的配置信息: (3). 获取数据库实例: x.getDb(daoConfig); (4). 数据库的增删改查. 1. 创建 ...
- 【Linux常见命令】cat命令
cat - concatenate files and print on the standard output cat 命令用于连接文件并打印到标准输出设备上. 用法: 1. cat file 查看 ...