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. ng-Enter指令

    app.directive('ngEnter', function() { return function(scope, element, attrs) { element.bind("ke ...

  2. 启动Mysql服务提示Can’t connect to local MySQL server through socket的解决方法

    启动Mysql服务常会提示下面错误: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/ ...

  3. Python开发入门与实战15-IIS部署

    15. IIS部署 前面的章节我们完成了基本的业务功能的开发,本章节我们来说说python django项目如何部署到实际的运行环境,完成开发系统的发布工作. Python Django 项目部署发布 ...

  4. mysql 导出导入数据库

    导入mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8 < db.all.sql导出 mysqldum ...

  5. JS第一天基础总结

    今天开始学习javascript 主要讲理论上的东西,例如,什么是脚本语言,什么是变量,什么是DOM,什么是BOM等. 脚本语言,实质上可以理解为我们编写的剧本,浏览器按照我们编写的剧本一步一步完成剧 ...

  6. 将string转换成char* (转)

    原文:http://blog.sina.com.cn/s/blog_786ce14d01014lpr.html string 是c++标准库里面其中一个,封装了对字符串的操作把string转换为cha ...

  7. C# 字符编码类Encoding

    在网络通信中,很多情况下都是将字符信息转成字节序列进行传输.将字符序列转为字节序列的过程称为编码.当这些字节传送到接收方,接收方需要逆向将字节序列转为字符序列.这个过程就是解码. 常见编码有ASCII ...

  8. C# 属性控件2

    PropertyGrid,.net框架下的一个控件,这是一个软件升级的项目,原来的软件用的是C++,控件用的还是第三方,这次升级到visual studio .net4.0版本,原以为.net的东西用 ...

  9. gdb调试方法

    先打开 gdb 的调试选项: -g 串口端: ./gdb-server    10.12.2.100:12345  ./Kylin 服务器端: (1)./gdb    ./Kylin (2) targ ...

  10. 15 cvpr An Improved Deep Learning Architecture for Person Re-Identification

    http://www.umiacs.umd.edu/~ejaz/ * 也是同时学习feature和metric * 输入一对图片,输出是否是同一个人 * 包含了一个新的层: include a lay ...