java POI 解析excel 2003和2007 直接转为List<Map> 返回
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> 返回的更多相关文章
- JAVA解析EXCEL(2003和2007)
本文参考: http://wenku.baidu.com/view/707f07d95022aaea998f0fd1.html http://surfingforrest.iteye.com/blog ...
- java poi解析excel报错处理
org.apache.xmlbeans.SchemaTypeLoaderException: XML-BEANS compiled schema: Incompatible minor version ...
- java poi解析excel日期为数字的问题
这个数字是什么呢?是以1900年为原点,到2015年8月21日,之间经过的天数. 知道这个后,就很好处理了,我们拿到1900年的日期,在这个日期上加上42237天即可.如下: Calendar cal ...
- Java Struts2读取Excel 2003/2007/2010例子
Java读写Excel的包是Apache POI(项目地址:http://poi.apache.org/),因此需要先获取POI的jar包,本实验使用的是POI 3.9稳定版. Apache POI ...
- java读写excel文件( POI解析Excel)
package com.zhx.base.utils; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi ...
- 在java poi导入Excel通用工具类示例详解
转: 在java poi导入Excel通用工具类示例详解 更新时间:2017年09月10日 14:21:36 作者:daochuwenziyao 我要评论 这篇文章主要给大家介绍了关于在j ...
- java POI创建Excel示例(xslx和xsl区别 )
Java用来处理office类库有很多,其中POI就是比较出名的一个,它是apache的类库,现在版本到了3.10,也就是2014年2月8号这个版本. 在处理PPT,Excel和Word前,需要导入以 ...
- poi解析Excel文件版本问题
poi解析Excel文件时有两种格式: HSSFWorkbook格式用来解析Excel2003(xls)的文件 XSSFWorkbook格式用来解析Excel2007(xlsx)的文件 如果用HSSF ...
- poi解析Excel内容
poi可以将指定目录下的Excel中的内容解析.读取到java程序中.下面是一个Demo: 使用poi需要导下包,如下: 首先是准备读取的Excel表,存放在"E:\programming\ ...
随机推荐
- 例子:Background Transfer Service Sample
本例演示了如何使用后台传输服务来进行后台文件下载,也就是说及时App已经停止运行,同样可以通过后台代理进行文件的下载操作. 对于后台文件传输一下知识点必须注意: 1. 通过使用 BackgroundT ...
- windows10(x64)+Qt+opencv配置及测试
本电脑系统:Windows10 64位 要下载的文件: 1.Qt 5.6.0 for Windows 32-bit,下载地址:(可以复制链接地址,用迅雷下载,速度快) http://download. ...
- Identify Memory Leaks in Visual CPP Applications —— VLD内存泄漏检测工具
原文地址:http://www.codeproject.com/Articles/1045847/Identify-Memory-Leaks-in-Visual-CPP-Applications 基于 ...
- TypeScript 中的 "=>" 真的很好用!!!
class funs { public $scope: IBarPadScope; constructor($scope: IBarPadScope) { this.$scope = $scope; ...
- vim 分屏显示
我用vim打开一个文件后,想同时打开另一个文件,就像windows中打开两个记事本一样,因此需要分屏显示 首先用vim打开一个文件 vim file1 输入命令[Esc] :sp file2 分屏打开 ...
- django文件批量上传-简写版
模板中创建表单 <form method='post' enctype='multipart/form-data' action='/upload/'> <input type='f ...
- Mac下搭建php开发环境【转】
Mac OS X 内置了Apache 和 PHP,这样使用起来非常方便.本文以Mac OS X 10.6.3为例.主要内容包括: 启动Apache 运行PHP 安装MySQL 使用phpMyAdmin ...
- 1.2 ASSEMBLY LANGUAGE
People are much happier moving up the ladder,socially or even technically.So our profession has move ...
- android 生成.keystore文件
cmd 进入jdk下的bin目录(我的目录:C:\Program Files\Java\jdk1.6.0_37\bin) keytool -genkey -alias xxx.keystore -ke ...
- PHP构造方法
构造方法 1.(特殊)对象创建完成后第一个自动调用的方法: 2.(特殊)方法名比较特殊,方法名可以与类相同: 3.给对象中的成员赋初始值: class boyfriend{ public $name; ...