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. 课程笔记:——javascript中的预解释2

    in:检测某一个属性是否属于这个对象(既可以检测私有的属性,也可以检测公有的属性) --> attr in obj 1.不管条件是否成立,在预解释的时候,判断体中的带var和function的都 ...

  2. Ext JS 4 老特征:statics 静态的变量和方法

    l   一.静态的变量和静态的方法 [译文原创Learning Ext JS 4 第51页] Statics的方法只属于类本身,而不属于任何一个实例,这就决定了我们是在定义类的内部来用statics方 ...

  3. zookeeper+dubbo-admin开发dubbo应用

    前面的章节中我们已经安装好了zookeeper,tomcat了.今天我们来实现一个完整的从dubbo消息产生到消费的完整流程. 1.dubbo api 2.dubbo consumer 消费者 3.d ...

  4. 解决PHP大文件上传问题

    PHP大文件上传问题    今天负责创业计划大赛的老师问我作品上报系统上传不了大文件,我当时纳闷了,做的时候没限制上传文件的大小阿,怎么会传不了呢,自己亲自体验了番,果然不 行,想了好一会儿才有点眉目 ...

  5. jQuery性能优化

    1. 优化选择器执行的速度 优先使用ID与标记选择器 在jQuery中,访问DOM元素的最快方式是通过元素ID号,其次是通过元素的标记.因为前者源于JavaScript中的document.getEl ...

  6. EasyUI加载树控件自动展开所有目录

    在这里如何加载树控件就不在熬述,在加载树控件后,树的节点全部展开,要在OnLoadSuccess事件中写代码:

  7. .net core 学习笔记(1)-分页控件的使用

    最近有个小项目,用.net core开发练练手,碰到的第一个问题就是分页控件的问题,自己写太费时间,上网查了下,发现有人已经封装好了的,就拿过来用了,分页控件github:https://github ...

  8. DotNetBar中TextBoxDropDown效果图

  9. opendir()函数

    opendir() 函数打开一个目录句柄,可由 closedir(),readdir() 和 rewinddir() 使用. 若成功,则该函数返回一个目录流,否则返回 false 以及一个 error ...

  10. string.empty和null的区别

    关于String.Empty和Null的问题是这样的,这两个都是表示空字符串,其中有一个重点是string str1= String.Empty和 string str2=null 的区别,这样定义后 ...