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中文件的更多相关文章

  1. java通过poi读取excel中的日期类型数据或自定义类型日期

    Java 读取Excel表格日期类型数据的时候,读出来的是这样的  12-十月-2019,而Excel中输入的是 2019/10/12 或 2019-10-12 poi处理excel时,当excel没 ...

  2. JAVA使用POI读取EXCEL文件的简单model

    一.JAVA使用POI读取EXCEL文件的简单model 1.所需要的jar commons-codec-1.10.jarcommons-logging-1.2.jarjunit-4.12.jarlo ...

  3. 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中 ...

  4. java用poi读取Excel表格中的数据

    Java读写Excel的包是Apache POI(项目地址:http://poi.apache.org/),因此需要先获取POI的jar包,本实验使用的是POI 3.9稳定版.Apache POI 代 ...

  5. Java实现POI读取Excel文件,兼容后缀名xls和xlsx

    1.引入所需的jar包: maven管理项目的话直接添加以下坐标即可: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -- ...

  6. java利用poi读取excel异常问题

    最近一个web工程需要完成一个小功能,利用文件上传然后读取文件内容写入到数据库,这里是操作的excel文件,excel文件分两种后缀,03版本的xls和之后的xlsx,现在大家一般都拿非常好用的插件直 ...

  7. java 使用POI读取excel数据

    原文:http://doc.okbase.net/0201zcr/archive/161440.html 一.定义 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Ja ...

  8. java调用POI读取Excel

    HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls:XSSFWorkbook:是操作Excel2007的版本,扩展名是.xlsx: 1.注意点 getPhy ...

  9. Java利用POI读取Excel

    官网直接下载POI  http://poi.apache.org/ package com.CommonUtil; import java.io.File; import java.io.FileIn ...

随机推荐

  1. ActiveMq C# 消息特性:延迟和定时消息投递

    ActiveMQ from version 5.4 has an optional persistent scheduler built into the ActiveMQ message broke ...

  2. C# 简单日志帮助类LogHelper

    调用: LogHelper.Debug(""); LogHelper.Info(""); LogHelper.Error(""); 项目添加 ...

  3. linux中上传文件出现Refused to display 'http://***' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.

    刚开始出现这个问题,去百度了一下,网上很多答案都是一致的,但是在我这里没有解决问题.这个问题服务器没有打印日志.说明没有访问到服务器上,但是前端又没有问题,很奇怪,后面终于有一个同事和我说会不会是腾讯 ...

  4. Struts2处理(jQuery)Ajax请求

    1. Ajax     Ajax(Asynchronous JavaScript and XML,异步JavaScript和XML)时一种创建交互式网页应用的网页开发技术,它并不是一项新的技术,其产生 ...

  5. python高级编程——网络编程(三)

    TCP和并发服务器 与UDP不同的是,他是一个面向连接的,可靠的数据传输协议 TCP通信比较复杂 先写一个TCP服务器,一般步骤如下: 1.首先是要创建一个socket套接字:socket() 2.服 ...

  6. JavaWeb 使用Session实现一次性验证码

    表单 <form action="loginServlet" method="post"> 请输入验证码:<input type=" ...

  7. Alpha4

    一.站立式会议照片 二.工作进展 (1) 昨天已完成的工作 a. 实现用户登录时获取用户信息功能 b. 实现个人目标列表,允许用户在个人目标界面浏览已设置的目标 c. 继续实现目标广场列表 (2)今天 ...

  8. js 字符串 有没有 像C# @ 那种 换行也可以显示的方法 \

  9. MySQL的select多表查询

    select 语句: select 语句一般用法为: select 字段名 from tb_name where 条件 ; select 查询语句类型一般分为三种:  单表查询,多表查询,子查询 最简 ...

  10. Redash - 安装和初试

    前言 当业务成长到一定规模之后,会有许多想看各种不同类型报表的需求,如果单独做在后台,那么无疑会浪费前端和后端开发的时间.所以一直都有在寻找一款好用的BI工具.后面查了一下,市面上好用的一些非商业的B ...