java读取excel文件并返回list结果集
2015-09-18 16:41
435 查看
/** * 用于读取excel * @author HUA *<span style="font-family: Arial, Helvetica, sans-serif;">count 为excel中的子文档号</span> */ public class excelload{ public static List<Map<String,Object>> loadExcel(String filepath,int count){ //创建Excel工作簿文件的引用 XSSFWorkbook wookbook=null; try{ wookbook = new XSSFWorkbook(new FileInputStream(filepath));//根据路劲创建引用 }catch(FileNotFoundException e){ // TODO Auto-generated catch block e.printStackTrace(); }catch(IOException e){ // TODO Auto-generated catch block e.printStackTrace(); } //在excel文档中,第一个工作表的缺省索引是0 XSSFSheet sheet=wookbook.getSheetAt(count); //获取到excel文件中的所有行数 int rows = sheet.getPhysicalNumberOfRows(); int shengchanstart=0; List<Map<String,Object>> li = new ArrayList<Map<String,Object>>(); boolean boo =false; for(int i=1;i<rows;i++){ XSSFRow row = sheet.getRow(i); if(row!=null){ //获取文件中的所有列 int cells = row.getPhysicalNumberOfCells(); String value=""; //遍历列 if(!boo){ aa: for(int j=0;j<cells;j++){ XSSFCell cell = row.getCell((short)j); if(cell!=null){ switch(cell.getCellType()){ case XSSFCell.CELL_TYPE_FORMULA: System.out.println(cell.getCellFormula() + "=====================");; break; case XSSFCell.CELL_TYPE_NUMERIC: value += cell.getNumericCellValue() + ","; break; case XSSFCell.CELL_TYPE_STRING: if("表名".equals(cell.getStringCellValue())){ boo=true; break aa; } value += cell.getStringCellValue() + ","; default: value += ""; break; } } } }else{ XSSFCell cell = row.getCell((short)1); Map<String,Object> map = new HashMap<String, Object>(); if(!"".equals(cell.getStringCellValue())){ String tablename=getMergedRegionValue(sheet,i); map.put("table",tablename); map.put("fieldname",row.getCell((short)(shengchanstart+2)).getStringCellValue()); map.put("desc",row.getCell((short)(shengchanstart+1)).getStringCellValue()); System.out.println(tablename+"**********"); li.add(map); } //System.out.println(i+"**********"); } } } System.out.println(li); return li; }
--调用的方法
/**
* 获取合并单元格的值
* @param sheet
* @param row
* @param column
* @return
*/
public static String getMergedRegionValue(Sheet sheet ,int row ){
int sheetMergeCount = sheet.getNumMergedRegions();
for(int i = 0 ; i < sheetMergeCount ; i++){
org.apache.poi.ss.util.CellRangeAddress ca = sheet.getMergedRegion(i);
int firstColumn = ca.getFirstColumn();
int lastColumn = ca.getLastColumn();
int firstRow = ca.getFirstRow();
int lastRow = ca.getLastRow();
if(row >= firstRow && row <= lastRow){
Row fRow = sheet.getRow(firstRow);
Cell fCell = fRow.getCell(firstColumn);
return getCellValue(fCell) ;
}
}
return null ;
}
/**
* 获取单元格的值
* @param cell
* @return
*/
public static String getCellValue(Cell cell){
if(cell == null) return "";
if(cell.getCellType() == Cell.CELL_TYPE_STRING){
return cell.getStringCellValue();
}else if(cell.getCellType() == Cell.CELL_TYPE_BOOLEAN){
return String.valueOf(cell.getBooleanCellValue());
}else if(cell.getCellType() == Cell.CELL_TYPE_FORMULA){
return cell.getCellFormula() ;
}else if(cell.getCellType() == Cell.CELL_TYPE_NUMERIC){
return String.valueOf(cell.getNumericCellValue());
}
return "";
}
相关文章推荐
- JAVA设计模式之单例模式
- java设计模式第12弹--工厂模式
- Android使用XUtils框架上传照片(一张或多张)和文本,服务器使用struts2接收
- 在eclipse中将android项目生成apk并且给apk签名
- java学习笔记之接口
- Java 英文首字母大写
- xpath 在java中的应用
- Java学习笔记07 集合框架
- java学习笔记之常用类
- Java的File.separator
- SSH深度历险记(八) 剖析SSH核心原则+Spring依赖注入的三种方式
- testng dataprovider 的几种用法以及Java中的二维数组
- java生成范围内的纯数字随机数
- springmvc二级缓存,查询缓存
- java学习笔记之异常
- java正则表达式的一个例子
- 解决spring要求jdk1.5或更高的问题
- Jboss7使用指定jdk(续)
- JAVA基础学习(十二)--多线程一线程之间的通信
- Spring定时任务的几种实现