Java通过poi读取excel中文件
maven依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.12</version>
</dependency> <dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.12</version>
</dependency>
代码示例
package com.**.**.**.common.utils; import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import java.io.*; /**
* @author zyydd
* @date 2019/3/15 15:00
*/
public class ExcelUtils {
private static final Logger LOGGER = LoggerFactory.getLogger(ExcelUtils.class); public static void main(String[] args) {
String[][] rowArray = getArrayFromXLSX("D://test.xlsx", 0);
for (String[] row : rowArray) {
for (String cell : row) {
System.out.print(cell + "\t");
}
System.out.println();
}
} /**
* 获取xlsx文件内容某个sheet(从0开始)的内容,以二维数组形式返回
*
* @param fileAbsolutePath xlsx文件的绝对路径
* @return xlsx文件的文本内容
*/
public static String[][] getArrayFromXLSX(String fileAbsolutePath, int bookIndex) {
InputStream inputStream = null;
try {
inputStream = new FileInputStream(new File(fileAbsolutePath));
XSSFWorkbook book = new XSSFWorkbook(inputStream);
if (bookIndex >= book.getNumberOfSheets()) {
LOGGER.error("getArrayFromXLSX error: bookIndex={} is to large! ", bookIndex);
return null;
}
XSSFSheet sheet = book.getSheetAt(bookIndex);
int rowNum = sheet.getLastRowNum() + 1;
int coloumNum = sheet.getRow(0).getPhysicalNumberOfCells();
String[][] contents = new String[rowNum][coloumNum];
for (int j = 0; j < rowNum; j++) {
XSSFRow row = sheet.getRow(j);
if (row != null) {
for (int k = 0; k < row.getLastCellNum(); k++) {
contents[j][k] = getXCellFormatValue(row.getCell(k));
}
}
}
return contents;
} catch (FileNotFoundException fe) {
LOGGER.error("getArrayFromXLSX error: FileNotFoundException", fe);
} catch (IOException ie) {
LOGGER.error("getArrayFromXLSX error: IOException", ie);
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (Exception e) {
LOGGER.error("getArrayFromXLSX close Exception", e);
}
}
}
return null;
} private static String getXCellFormatValue(XSSFCell cell) {
String cellValue = "";
if (null != cell) {
switch (cell.getCellType()) {
case XSSFCell.CELL_TYPE_STRING:
cellValue = cell.getRichStringCellValue().getString();
break;
case XSSFCell.CELL_TYPE_NUMERIC:
cellValue = (new Double(cell.getNumericCellValue())).intValue() + "";
break;
default:
cellValue = " ";
}
} else {
cellValue = "";
}
return cellValue;
} }
excel数据(test.xlsx)

执行结果

Java通过poi读取excel中文件的更多相关文章
- java通过poi读取excel中的日期类型数据或自定义类型日期
Java 读取Excel表格日期类型数据的时候,读出来的是这样的 12-十月-2019,而Excel中输入的是 2019/10/12 或 2019-10-12 poi处理excel时,当excel没 ...
- JAVA使用POI读取EXCEL文件的简单model
一.JAVA使用POI读取EXCEL文件的简单model 1.所需要的jar commons-codec-1.10.jarcommons-logging-1.2.jarjunit-4.12.jarlo ...
- Java之POI读取Excel的Package should contain a content type part [M1.13]] with root cause异常问题解决
Java之POI读取Excel的Package should contain a content type part [M1.13]] with root cause异常问题解决 引言: 在Java中 ...
- java用poi读取Excel表格中的数据
Java读写Excel的包是Apache POI(项目地址:http://poi.apache.org/),因此需要先获取POI的jar包,本实验使用的是POI 3.9稳定版.Apache POI 代 ...
- Java实现POI读取Excel文件,兼容后缀名xls和xlsx
1.引入所需的jar包: maven管理项目的话直接添加以下坐标即可: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -- ...
- java利用poi读取excel异常问题
最近一个web工程需要完成一个小功能,利用文件上传然后读取文件内容写入到数据库,这里是操作的excel文件,excel文件分两种后缀,03版本的xls和之后的xlsx,现在大家一般都拿非常好用的插件直 ...
- java 使用POI读取excel数据
原文:http://doc.okbase.net/0201zcr/archive/161440.html 一.定义 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Ja ...
- java调用POI读取Excel
HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls:XSSFWorkbook:是操作Excel2007的版本,扩展名是.xlsx: 1.注意点 getPhy ...
- Java利用POI读取Excel
官网直接下载POI http://poi.apache.org/ package com.CommonUtil; import java.io.File; import java.io.FileIn ...
随机推荐
- Python实现抽样分布的验证(正态分布、卡方分布、T分布)
参考链接:https://github.com/v-gazh/LearningStatsGroup/blob/master/week7/week7.ipynb 源地址:https://github.c ...
- wsl中的git问题
当使用wsl打开Windows下的仓库时可能会出现所有文件都被标记为modified,这时一般有两种情况. 文件权限问题 由于wsl申请对文件的读写权限导致文件的权限发生改变.这时只需修改git的设置 ...
- Android源码分析(十七)----init.rc文件添加脚本代码
一:init.rc文件修改 开机后运行一次: chmod 777 /system/bin/bt_config.sh service bt_config /system/bin/bt_config.sh ...
- Go语言学习——三分钟看透iota
源起枚举 最近做需求时,有一个需要枚举的场景,大概有10+个枚举类型,不愿意像定义一个开关那样敷衍的写成 const ( SwitchOff = 0 SwitchOn = 1 ) 显得不够精致~ 于是 ...
- Linux操作系统安全-证书的申请原理
Linux操作系统安全-证书的申请原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.APR的中间人攻击 如下图所示,如果在client和server端有一个中间人攻击就比较麻 ...
- 网络编程socket理论一
网络通信理论 首先说下网络之间的通信流程看图 Socket 层是位于运输层和应用层之间的,封装好的,方便使用 Socket 是什么和工作流程 Socket是应用层与TCP/IP协议族通信的中间软件抽象 ...
- Tram POJ - 1847
题目链接:https://vjudge.net/problem/POJ-1847 思路:想从A到B使用开关少,想清楚了就是个简单的最短路,可以把不用开开关为权值0, 要开开关为权值1,就是求A到B开开 ...
- 实现Mac主机上的Docker容器中的图形界面显示(运行GUI应用)
我有一个需求: 一方面,我需要在 Docker 容器环境下运行应用(因为有些环境在 Mac 下很难安装配置,并且希望环境干净隔离). 另一方面,容器中的应用又需要进行图形界面的显示. 由于 Docke ...
- VUE简单的语法
这篇主要记录了在使用过程的当中,对于vue的一些方法的理解 1.Vue生命周期中mounted和created的区别 created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视 ...
- Ansible常用模块整理
问答题 请总结今天所学的ansible模块,以及各个模块的作用! ping ping模块用来检查目标主机是否在线 例子:ansible webserver -m ping yum yum模块用来在Ce ...