1.POI 官网下载jar包,3.5以上

2.项目导入jar包

3.参数:String数组--对应的excel列名对应的KEY,File  excel文件,sheetNumber ---excel的sheet位置 0开始

public static List getExcelToList(String[]columnList,File path,int sheetNumber)throws Exception{

        List resultList =new ArrayList();
try { //解析excel 2003 xls/2007 xlsx
Workbook wookbook=WorkbookFactory.create(new FileInputStream(path));
//获取excel的sheet位置
Sheet sheet=wookbook.getSheetAt(sheetNumber);
//获取行数
//int rowNum=sheet.getPhysicalNumberOfRows();
int rownum=sheet.getLastRowNum();
//若行数为1 ,即只有行抬头,没有数据则返回
if(rownum<1){
return resultList;
}
//遍历行
for(int r=1;r<=rownum;r++){
Map rowMap=new HashMap();
//获取行
Row row=sheet.getRow(r);
if(row==null){
continue;
}
//遍历单元格cell
for(short c=0;c<row.getLastCellNum();c=(short) (c+1)){ Cell cell=row.getCell(c);
Object object=getCellInfo(cell);
rowMap.put(columnList[c],object);
}
resultList.add(rowMap);
}
return resultList;
} catch (Exception e) {
e.printStackTrace();
throw e;
}
} /**
*
* @Title: getCellInfo
* @Description:返回单元格对应的值
* @param cell
* @return
*/
public static Object getCellInfo(Cell cell){ Object resultObject=null;
if(cell!=null){
//单元格数据类型
int cellType=cell.getCellType();
switch (cellType) {
//值为空白
case Cell.CELL_TYPE_BLANK:
resultObject=null;
break;
//值为布尔
case Cell.CELL_TYPE_BOOLEAN:
resultObject=cell.getBooleanCellValue();
break;
//错误
case Cell.CELL_TYPE_ERROR:
resultObject=null;
break;
//值为String
case Cell.CELL_TYPE_STRING:
//resultObject=cell.getStringCellValue();
resultObject=cell.getRichStringCellValue().toString();
break;
//值为数值或者日期
case Cell.CELL_TYPE_NUMERIC:
if(DateUtil.isCellDateFormatted(cell)){
double d=cell.getNumericCellValue();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date tempDate=DateUtil.getJavaDate(d);
resultObject=sdf.format(tempDate);
}else{
String ser = String.format("%20.2f", new Object[] { Double
.valueOf(cell.getNumericCellValue()) });
String ser2 = String.format("%20.0f", new Object[] { Double
.valueOf(cell.getNumericCellValue()) });
String fs = ser2.trim() + ".00";
if(fs.equals(ser.trim())){
resultObject=ser2.trim();
}else {
resultObject=ser.trim();
} }
break;
//公式
case Cell.CELL_TYPE_FORMULA:
resultObject=Double.valueOf(cell.getNumericCellValue());
break;
default:
System.out.println("枚举了所有类型"); }
}
return resultObject;
}

新手第一次发博,不对之处请指出~~~

java POI 解析excel 2003和2007 直接转为List<Map> 返回的更多相关文章

  1. JAVA解析EXCEL(2003和2007)

    本文参考: http://wenku.baidu.com/view/707f07d95022aaea998f0fd1.html http://surfingforrest.iteye.com/blog ...

  2. java poi解析excel报错处理

    org.apache.xmlbeans.SchemaTypeLoaderException: XML-BEANS compiled schema: Incompatible minor version ...

  3. java poi解析excel日期为数字的问题

    这个数字是什么呢?是以1900年为原点,到2015年8月21日,之间经过的天数. 知道这个后,就很好处理了,我们拿到1900年的日期,在这个日期上加上42237天即可.如下: Calendar cal ...

  4. Java Struts2读取Excel 2003/2007/2010例子

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

  5. java读写excel文件( POI解析Excel)

    package com.zhx.base.utils; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi ...

  6. 在java poi导入Excel通用工具类示例详解

    转: 在java poi导入Excel通用工具类示例详解 更新时间:2017年09月10日 14:21:36   作者:daochuwenziyao   我要评论   这篇文章主要给大家介绍了关于在j ...

  7. java POI创建Excel示例(xslx和xsl区别 )

    Java用来处理office类库有很多,其中POI就是比较出名的一个,它是apache的类库,现在版本到了3.10,也就是2014年2月8号这个版本. 在处理PPT,Excel和Word前,需要导入以 ...

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

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

  9. poi解析Excel内容

    poi可以将指定目录下的Excel中的内容解析.读取到java程序中.下面是一个Demo: 使用poi需要导下包,如下: 首先是准备读取的Excel表,存放在"E:\programming\ ...

随机推荐

  1. HTML中的select只读

    因为Select下拉框只支持disabled属性,不支持readOnly属性,而在提交时,disabled的控件,又是不提交值的.现提供以下几种解决方案: 1.在html中使用以下代码,在select ...

  2. 设计模式之observer and visitor

    很长时间一直对observer(观察者)与visitor(访问者)有些分不清晰. 今天有时间进行一下梳理: 1.observer模式 这基本就是一个通知模式,当被观察者发生改变时,通知所有监听此变化的 ...

  3. Web前端开发的前景与用处

    随着时代的发展,现在从事IT方向的人有很多,所以励志要成为前端开发工程师的人有很多.当然也有很多人在犹豫不知道该从事哪个方向,我今天就是来给大家分析一下Web前端开发的前景.包括工作内容,发展前景和薪 ...

  4. SQL Server 内置函数、临时对象、流程控制

    SQL Server 内置函数 日期时间函数 --返回当前系统日期时间 select getdate() as [datetime],sysdatetime() as [datetime2] getd ...

  5. 玩转mysql-5.7.9-winx64.zip解压版

    解压zip文件,放到D盘 追加\bin到Path环境变量 修改my-default.ini,# basedir =D:\mysql_5.7.9_winx64# datadir =D:\mysql_5. ...

  6. python获取字母在字母表对应位置的几种方法及性能对比较

    python获取字母在字母表对应位置的几种方法及性能对比较 某些情况下要求我们查出字母在字母表中的顺序,A = 1,B = 2 , C = 3, 以此类推,比如这道题目 https://project ...

  7. VS 2015 ,与Github的小问题笔记

    2016.10.15 1:从Git.OSChina(Github)上,下载的项目代码 在配置完Remote Url后只能提取数据,却无法拉取原因. 原因:未采用Remote分支创建本地分支. 决解: ...

  8. 感知机的对偶形式——python3实现

    运用对偶的(对应原始)感知机算法实现线性分类. 参考书目:<统计学习方法>(李航) 算法原理: 代码实现: 环境:win7 32bit + Anaconda3 +spyder 和原始算法的 ...

  9. thoughtworks编程题

    微博看到vczh分享的thoughtworks的一道题目https://www.jinshuju.net/f/EGQL3D,代码写完之后才得知这个公司并不是我想的那样美好. 题目: FizzBuzzW ...

  10. u-boot平台的建立,驱动的添加,索引的创建,命令机制的实现.

    一:U-boot移植前建立自己的平台: 关注的相关文件:1.u-boot- 2010.03/board/samsung/ //这个目录下需要创建自己的板级目录fsc100 cp –a smdkc100 ...