(5)POI读取Excel内容
2016-03-19 12:21
441 查看
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.logging.Level; import java.util.logging.Logger; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import writeFileContent.ExcelUtil; public class ExcelReader { /** * 读取excel03内容 * @param file excel03文件 * @return ArrayList<ArrayList<String>> */ public static ArrayList<ArrayList<String>> readXLS(String file){ ArrayList<ArrayList<String>> data=new ArrayList<ArrayList<String>>(); try{ InputStream is=new FileInputStream(file); HSSFWorkbook workbook=new HSSFWorkbook(is);//创建对Excel工作簿文件的引用 //遍历每个sheet表 for (int numSheet = 0; numSheet < workbook.getNumberOfSheets(); numSheet++) { if (null != workbook.getSheetAt(numSheet)) { HSSFSheet sheet = workbook.getSheetAt(numSheet); //获得一个sheet //遍历sheet表的每一行的内容 for (int rowNumOfSheet = 0; rowNumOfSheet <= sheet.getLastRowNum(); rowNumOfSheet++) { if (null != sheet.getRow(rowNumOfSheet)) { HSSFRow row = sheet.getRow(rowNumOfSheet); //获得一行 ArrayList<String> rowList=new ArrayList<String>(); //遍历该行每个单元格的内容 for (int cellNumOfRow = 0; cellNumOfRow <= row.getLastCellNum(); cellNumOfRow++) { if (null != row.getCell(cellNumOfRow)) { HSSFCell cell = row.getCell(cellNumOfRow); //获得列值 if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){//数值类型 if(HSSFDateUtil.isCellDateFormatted(cell)){ DateFormat df=new SimpleDateFormat("yyyy/MM/dd"); Date date=cell.getDateCellValue(); rowList.add(df.format(date)); }else{ double value=cell.getNumericCellValue(); rowList.add(String.valueOf(value)); } }else if(cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN){//布尔类型 boolean bool=cell.getBooleanCellValue(); rowList.add(String.valueOf(bool)); }else { rowList.add(cell.getStringCellValue()); } } } data.add(rowList); } } } } } catch (FileNotFoundException ex) { Logger.getLogger(ExcelUtil.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(ExcelUtil.class.getName()).log(Level.SEVERE, null, ex); } return data; } /** * 读取excel07内容 * @param file excel07文件 * @return ArrayList<ArrayList<String>> */ public static ArrayList<ArrayList<String>> readXLSX(String file){ ArrayList<ArrayList<String>> data=new ArrayList<ArrayList<String>>(); try{ //构造 XSSFWorkbook 对象,file 传入文件路径 XSSFWorkbook xwb = new XSSFWorkbook(file); //循环工作表Sheet for(int numSheet = 0; numSheet < xwb.getNumberOfSheets(); numSheet++){ XSSFSheet sheet = xwb.getSheetAt(numSheet); if(sheet == null){ continue; } //循环行Row for(int rowNum = 0; rowNum <= sheet.getLastRowNum(); rowNum++){ XSSFRow row = sheet.getRow(rowNum); if(row == null){ continue; } ArrayList<String> rowList=new ArrayList<String>(); //循环列Cell for(int cellNum = 0; cellNum <= row.getLastCellNum(); cellNum++){ XSSFCell cell = row.getCell(cellNum); if(cell == null){ continue; } if(cell.getCellType() == XSSFCell.CELL_TYPE_BOOLEAN){ boolean bool=cell.getBooleanCellValue(); rowList.add(String.valueOf(bool)); }else if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){//数值类型 if(HSSFDateUtil.isCellDateFormatted(cell)){ DateFormat df=new SimpleDateFormat("yyyy/MM/dd"); Date date=cell.getDateCellValue(); rowList.add(df.format(date)); }else{ double value=cell.getNumericCellValue(); rowList.add(String.valueOf(value)); } }else{ rowList.add(cell.getStringCellValue()); } } data.add(rowList); } } } catch (IOException ex) { Logger.getLogger(ExcelUtil.class.getName()).log(Level.SEVERE, null, ex); } return data; } /** * 根据文件后缀名来判断是xls还是xlsx,从而决定用哪个方法获取excel内容 * @param file 文件 * @return 内容 */ public static ArrayList<ArrayList<String>> read(String file){ ArrayList<ArrayList<String>> data=new ArrayList<ArrayList<String>>(); String fileType=file.substring(file.lastIndexOf(".")).toLowerCase(); switch(fileType){ case ".xls": data=readXLS(file); break; case ".xlsx": data=readXLSX(file); break; default: return null; } return data; } public static void main(String args[]){ String file=""; ArrayList<ArrayList<String>> data=read(file); if(data!=null){ for(ArrayList<String> list:data){ System.out.println(list); } } } }
相关文章推荐
- visual studio2013安装及测试
- Box2D射线和AABB碰撞检测
- oracle建表语句
- PAT 乙级 1011.A+B和C
- 【蓝桥杯】海盗喝酒
- 重学数据结构系列之——队列
- (4)Python读写csv文件
- c语言赋值语句
- 射线与球
- 什么是Mac地址?什么是交换机? 涉及单工,半双工,双工模式
- 【蓝桥杯】棋盘上的麦子
- (3)Python读写Excel
- 求二进制数中1的个数
- 【Android】21.2 2D图形图像处理(Canvas和Paint)
- caffe入门学习:从我们的数据转化成为caffe可以使用的数据格式
- (2)iText生成PDF
- RedHat版的linux安装yum源及redis
- 作业2
- Unity3D小小小经验篇——Canvas
- JAVA学习之数据类型的使用