本文举个简单的实例 读取上图的 excel文件到 List<User>集合

首先 导入POi 相关 jar包

在pom.xml 加入

        <!-- poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<!--poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>

创建 user 实体

下面就是工具类

根据自己的需要更改实体对象即可

package com.boot.utils;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory; import com.boot.entity.User; public class ExcelReader {
/**
* 根据excal路径生成实体集合
* @author Changhai
* @data 2017-7-5
* @param filePath
* @return
*/
public static List<?> getList(String filePath){
InputStream is;
try {
is = new FileInputStream(filePath);
return getList(is);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 根据输入流生成实体集合
* @param is
* @author Changhai
* @data 2017-7-5
* @return
* @throws IOException
*/
public static List<User> getList(InputStream is)
throws IOException {
List<List<String>> list = ExcelReader.readExcel(is); //-----------------------遍历数据到实体集合开始-----------------------------------
List<User> listBean = new ArrayList<User>();
for (int i = ; i < list.size(); i++) {// i=1是因为第一行不要
User uBean = new User();
List<String> listStr = list.get(i);
for (int j = ; j < listStr.size(); j++) {
switch(j){
case :uBean.setName(listStr.get(j));break;// 第一列
case :uBean.setPassword(listStr.get(j));break;// 第二列
case :uBean.setId(Integer.parseInt(listStr.get(j).substring(,listStr.get(j).indexOf("."))));
}
}
listBean.add(uBean);
}
//----------------------------遍历数据到实体集合结束----------------------------------
return listBean;
} /**
* Excel读取 操作
*/
public static List<List<String>> readExcel(InputStream is)
throws IOException {
Workbook wb = null;
try {
wb = WorkbookFactory.create(is);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (InvalidFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} /** 得到第一个sheet */
Sheet sheet = wb.getSheetAt();
/** 得到Excel的行数 */
int totalRows = sheet.getPhysicalNumberOfRows(); /** 得到Excel的列数 */
int totalCells = ;
if (totalRows >= && sheet.getRow() != null) {
totalCells = sheet.getRow().getPhysicalNumberOfCells();
} List<List<String>> dataLst = new ArrayList<List<String>>();
/** 循环Excel的行 */
for (int r = ; r < totalRows; r++) {
Row row = sheet.getRow(r);
if (row == null)
continue;
List<String> rowLst = new ArrayList<String>();
/** 循环Excel的列 */
for (int c = ; c < totalCells; c++) {
Cell cell = row.getCell(c);
String cellValue = "";
if (null != cell) {

              HSSFDataFormatter hSSFDataFormatter = new HSSFDataFormatter();
              cellValue= hSSFDataFormatter.formatCellValue(cell);

// 以下是判断数据的类型
            /*
switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC: // 数字
cellValue = cell.getNumericCellValue() + "";
break;
case Cell.CELL_TYPE_STRING: // 字符串
cellValue = cell.getStringCellValue();
break;
case Cell.CELL_TYPE_BOOLEAN: // Boolean
cellValue = cell.getBooleanCellValue() + "";
break;
case Cell.CELL_TYPE_FORMULA: // 公式
cellValue = cell.getCellFormula() + "";
break;
case Cell.CELL_TYPE_BLANK: // 空值
cellValue = "";
break;
case Cell.CELL_TYPE_ERROR: // 故障
cellValue = "非法字符";
break;
default:
cellValue = "未知类型";
break;
}*/
}
rowLst.add(cellValue);
}
/** 保存第r行的第c列 */
dataLst.add(rowLst);
}
return dataLst;
} public static void main(String[] args) {
// TODO Auto-generated method stub
try {
//根据流
InputStream is = new FileInputStream("d:\\user.xlsx");
List<User> list = (List<User>) ExcelReader.getList(is);
//根据文件路径
//List<User> list = (List<User>) ExcelReader.getList("d:\\user.xlsx");
for (int i = ; i < list.size(); i++) {
User cBean = list.get(i);
System.out.println(cBean.getName()+ "~~" + cBean.getPassword() + "~~" + cBean.getId());
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

少于150字不让上传,少于150字不让上传,少于150字不让上传,少于150字不让上传,少于150字不让上传,少于150字不让上传,少于150字不让上传,少于150字不让上传,少于150字不让上传,少于150字不让上传

POI读取excel工具类 返回实体bean集合(xls,xlsx通用)的更多相关文章

  1. poi读取excel工具类

    package com.manage.utils; import ch.qos.logback.core.net.SyslogOutputStream; import com.google.gson. ...

  2. POI读取excel工具类(xls,xlsx通用)

    package com.boot.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotF ...

  3. 自己封装的poi操作Excel工具类

    自己封装的poi操作Excel工具类 在上一篇文章<使用poi读写Excel>中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完 ...

  4. java里poi操作Excel工具类【我改】

    参考原文: https://www.cnblogs.com/yizhang/p/7244917.html 我改: package test; import java.io.File; import j ...

  5. 使用POI导出EXCEL工具类并解决导出数据量大的问题

    POI导出工具类 工作中常常会遇到一些图表需要导出的功能,在这里自己写了一个工具类方便以后使用(使用POI实现). 项目依赖 <dependency> <groupId>org ...

  6. 使用回调方式写POI导入excel工具类

    场景是这样的:为了做一个excel导入的功能,为了尽可能的写一个通用的工具类,将与poi有关的东西都封装起来,以便以其他人员只用关心自己的业务,不用和poi打交道. 写到最后,现在还是会有poi的东西 ...

  7. POI生成Excel工具类

    import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayInp ...

  8. java poi读取excel公式,返回计算值(转)

    http://blog.csdn.net/CYZERO/article/details/6573015 经测试,确实可以 1 package hrds.zpf.poi;  2  3  import o ...

  9. java操作excel 工具类

    java操作excel 可参考https://blog.csdn.net/xunwei0303/article/details/53213130 直接上代码: 一.java生成excel文件: pac ...

随机推荐

  1. MySQL优化之表结构优化的5大建议(数据类型选择讲的很好)

    殊不知,在N年前被奉为"圣经"的数据库设计3范式早就已经不完全适用了.这里我整理了一些比较常见的数据库表结构设计方面的优化技巧,希望对大家有用. 由于MySQL数据库是基于行(Ro ...

  2. 关于EasyUI中的Tree

    2017年6月21日,天气阴.心情比较沉重. 近期由于毕设的事情,三周不写代码了.这周测试提交了一些BUG,于是开始着手处理,还真的是熟能生巧,三周的功夫就感觉有点生疏.其中有一个BUG就是角色对应的 ...

  3. oracle sql语句跟踪及性能分析工具实现

    在网上找了一大圈,没找着合适的工具来跟踪oracle一段时间的sql. 我们的场景是打算自动化跑遍所有场景(rft)+fiddler跟踪请求+后端跟踪sql,根据结果去分析慢的请求和sql,本来awr ...

  4. 2017-06-22初识python

    初识python #!/usr/bin/env python (python解释器的文件路径)# -*- coding:utf-8 -*- (使用的编码内型)# python 2.7 <需要加第 ...

  5. 【LeetCode】187. Repeated DNA Sequences

    题目: All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: " ...

  6. 『转』MarsEdit快速插入源代码

    开始用MarsEdit来写博文,客户端的,毕竟是要方便的多啊. 遇到的第一个问题就是:MarsEdit没有提供快速插入源代码的工具,而对于我这枚码农而言,这个就有点太杯具了. 简单研究了一下,发现Ma ...

  7. grep[行号&正则匹配字符有颜色]

    事情是这样的,昨天在深入学习grep命令时,看到别人博客用grep正则匹配,不仅行数有颜色,而且匹配到的字符也有颜色.我在CRT也试了下,毛颜色都没有.顿时感觉 so low. 解决 编辑vim~/. ...

  8. Spring Boot1.5.4 AOP实例

    原文:https://github.com/x113773/testall/issues/12 1. 还是首先添加依赖(使用当前springboot的默认版本)```<dependency> ...

  9. java实现https请求

    package com.lichmama.test; import java.io.IOException; import java.net.URL; import java.security.Key ...

  10. mybatis存取blob对象+@Cacheable实现数据缓存

    参考文档: http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-cache/ 需求场景: 当前业务通过第三方接口查询一个业务数据, ...