首先需要引入以下jar包

如果使用maven,需要添加两个依赖

  <dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15-beta2</version>
</dependency>
</dependencies>

excel分为两种后缀,一是xls,二是xlsx。

首先针对xls格式的excel进行解析:

    public List<String[]> readExcel(File file){
List<String[]> list = new ArrayList<>(); try {
HSSFWorkbook hw = new HSSFWorkbook(new FileInputStream(file)); for (int i = 0; i < hw.getNumberOfSheets(); i++) {
HSSFSheet hs = hw.getSheetAt(i);
if(hs.getLastRowNum() == 0)
continue; for (int j = 0; j <= hs.getLastRowNum(); j++) {//
HSSFRow row = hs.getRow(j);
String[] array = new String[row.getLastCellNum()]; for (int k = 0; k < row.getLastCellNum(); k++) {
HSSFCell cell = row.getCell(k);
array[k] = this.getValue(cell);
}
list.add(array);
}
} } catch (IOException e) {
e.printStackTrace();
} return list;
} private String getValue(HSSFCell cell){
String value;
CellType type = cell.getCellTypeEnum(); switch (type) {
case STRING:
value = cell.getStringCellValue();
break;
case BLANK:
value = "";
break;
case BOOLEAN:
value = cell.getBooleanCellValue() + "";
break;
case NUMERIC:
value = cell.getNumericCellValue() + "";
break;
case FORMULA:
value = cell.getCellFormula();
break;
case ERROR:
value = "非法字符";
break;
default:
value = "";
break;
}
return value;
}

对于xlsx格式的excel,与上者的区别在于将HSSF***换成XSSF***,样例如下:

    public List<String[]> readExcel(File file){
List<String[]> list = new ArrayList<>(); try {
XSSFWorkbook xw = new XSSFWorkbook(new FileInputStream(file)); for (int i = 0; i < xw.getNumberOfSheets(); i++) {
XSSFSheet xs = xw.getSheetAt(i);
if(xs.getLastRowNum() == 0)
continue; for (int j = 0; j <= xs.getLastRowNum(); j++) {
XSSFRow row = xs.getRow(j);
String[] array = new String[row.getLastCellNum()]; for (int k = 0; k <= row.getLastCellNum(); k++) {
XSSFCell cell = row.getCell(k);
if(cell == null)
continue;
array[k] = this.getValue(cell);
}
list.add(array);
}
} } catch (IOException e) {
e.printStackTrace();
} return list;
} private String getValue(XSSFCell cell){
String value;
CellType type = cell.getCellTypeEnum(); switch (type) {
case STRING:
value = cell.getStringCellValue();
break;
case BLANK:
value = "";
break;
case BOOLEAN:
value = cell.getBooleanCellValue() + "";
break;
case NUMERIC:
value = cell.getNumericCellValue() + "";
break;
case FORMULA:
value = cell.getCellFormula();
break;
case ERROR:
value = "非法字符";
break;
default:
value = "";
break;
}
return value;
}

java利用poi解析excel文件的更多相关文章

  1. java利用poi生成excel文件后下载本地

    1.该功能需要poi的jar包,链接: http://pan.baidu.com/s/1migAtNq 密码: 38fx. 2.首先新建一个实体类,用以存放单个数据 public class Test ...

  2. Java 利用 poi 生成 Excel文件的通用例子

    在用java 写数据库应用的时候, 通常会生成各种报表,而这些报表可能会被导出为各种格式的文件,比如Excel文档,pdf 文档等等. 今天先做了一个生成Excel 文档的例子,主要解决以下问题: 生 ...

  3. java使用POI实现excel文件的读取,兼容后缀名xls和xlsx

    需要用的jar包如下: 如果是maven管理的项目,添加依赖如下: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --&g ...

  4. Java Struts2 POI创建Excel文件并实现文件下载

    Java Struts2 POI创建Excel文件并实现文件下载2013-09-04 18:53 6059人阅读 评论(1) 收藏 举报 分类: Java EE(49) Struts(6) 版权声明: ...

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

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

  6. java通过poi编写excel文件

    public String writeExcel(List<MedicalWhiteList> MedicalWhiteList) { if(MedicalWhiteList == nul ...

  7. poi解析Excel文件版本问题

    poi解析Excel文件时有两种格式: HSSFWorkbook格式用来解析Excel2003(xls)的文件 XSSFWorkbook格式用来解析Excel2007(xlsx)的文件 如果用HSSF ...

  8. java使用jxl,poi解析excel文件

    public interface JavaExcel { /** * 使用jxl写excel文件 */ public void writeJxlExcel(); /** * 使用jxl读excel文件 ...

  9. Java通过jxl解析Excel文件入库,及日期格式处理方式 (附源代码)

    JAVA可以利用jxl简单快速的读取文件的内容,但是由于版本限制,只能读取97-03  xls格式的Excel. 本文是项目中用到的一个实例,先通过上传xls文件(包含日期),再通过jxl进行读取上传 ...

随机推荐

  1. 关于 CGI,Fastcgi和php-fpm 理解

    首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者. web server(比如说nginx)只是内容的分发者.比如,如果请求/index.h ...

  2. vbs调用bat 隐藏bat运行时的黑框

    //新建文本文件 ,保存为后缀为bat.如:startBAT.vbs public const vbQuote="""" temp="C:\A_WOR ...

  3. C++ 执行 cmd 命令 删除文件 删除注册表项

    #include <Windows.h> WinExec("cmd /C \"del C:\\Windows\\secretWin.ini\"",S ...

  4. Lambda引言

    Lambda表达式:可以方便我们把方法当做参数传递 package airycode_java8.nice1; import org.junit.Test; import java.util.*; / ...

  5. LeetCode12.整数转罗马数字

    给定一个整数,将其转为罗马数字.输入确保在 1 到 3999 的范围内. 示例 1: 输入: 3 输出: "III" 示例 2: 输入: 4 输出: "IV" ...

  6. php 静态方法 静态属性 和 普通方法 普通属性区别

    1,实例属性,是每个对象都可以不一样的数据,也是每个对象都“独自拥有”的数据: 2,静态属性,他不属于任何一个对象,而只属于该类本身,也可以理解为为所有对象所共有的数据:

  7. armv8 memory translation table descriptor

    上一节大致给出了descriptor的结构,这篇细致分析各个field: 1) Table Descriptor:stage2中不包含任何的attribute的field,每个level中的descr ...

  8. Codeforces Round #323

    div1 C 这题的是给了一个无限循环的子数组,问有多少个 (l,s)l代表起点s代表长度的循环串,使得所有的在原串中的每位都小于等于另外这个串(l<=n,1<=s<n) 像这样,我 ...

  9. 【转】通过Excel生成批量SQL语句,处理大量数据

    经常会遇到这样的要求:用户给发过来一些数据,要我们直接给存放到数据库里面,有的是Insert,有的是Update等等,少量的数据我们可以采取最原始的办法,也就是在SQL里面用Insert into来实 ...

  10. Apache+Tomcat+Memcached实现会话保持

    会话保持的三种方式 Session sticky会话绑定:通过在前端调度器的配置中实现统一session发送至同一后发端服务器 Session cluster会话集群:通过配置Tomcat保持所有To ...