Apache的POI项目为我们提供了非常方便的操作Excel以及Microsoft的其它办公软件操作.
关于java操作Excel所需要的jar包如下:大家可以在apache网站下载得到.
下面演示使用POI简单读取Excel:
//Hello POI @Test public void testRead() { try { //第一步:创建工作对象 Workbook wb = WorkbookFactory.create(new File("D:/Project/MAVEN_ANT/poi_1/excel/IT.xls")) ; //第二步:使用工作对象获取工作溥 Sheet sheet = wb.getSheetAt(0) ; //第三步:在工作溥对象中获取行 Row row = sheet.getRow(0) ; //第四步:根据行获取列 Cell cell = row.getCell(0) ; //注意在Excel是有类型的. /** * CELL_TYPE_BLANK Blank Cell type (3) CELL_TYPE_BOOLEAN Boolean Cell type (4) CELL_TYPE_ERROR Error Cell type (5) CELL_TYPE_FORMULA Formula Cell type (2) CELL_TYPE_NUMERIC Numeric Cell type (0) CELL_TYPE_STRING String Cell type (1) */ System.out.println(cell.getCellType()); //获取类型 System.out.println(cell.getStringCellValue()); //获取数据 } catch (InvalidFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //遍历整个工作溥 @Test public void testList() { try { Workbook wb = WorkbookFactory.create(new File("D:/Project/MAVEN_ANT/poi_1/excel/IT.xls")) ; Sheet sheet = wb.getSheetAt(0) ; //sheet.getFirstRowNum() ; //获取第一行 //sheet.getLastRowNum() ; //获取最后一行 //普通方法 for(int i = 0; i < sheet.getLastRowNum(); i++) { Row row = sheet.getRow(i) ; //row.getFirstCellNum() ; //获取第一列 //row.getLastCellNum() ; //获取最后一列 for(int j = 0; j < row.getLastCellNum(); j++) { Cell cell = row.getCell(j) ; //getCellValue:方便,统计将读取的内容转为String类型 System.out.print(getCellValue(cell) + "-----") ; } System.out.println() ; } //增强for for(Row row : sheet) { for(Cell cell : row) { System.out.print(getCellValue(cell) + "-----") ; } System.out.println() ; } } catch (InvalidFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 获取读取的数据统一转为String * @param cell Cell * @return String */ private String getCellValue(Cell cell) { String value = null ; switch(cell.getCellType()) { case Cell.CELL_TYPE_NUMERIC : value = String.valueOf(cell.getNumericCellValue()) ; break ; case Cell.CELL_TYPE_STRING : value = cell.getStringCellValue() ; break ; case Cell.CELL_TYPE_FORMULA : value = String.valueOf(cell.getCellFormula()) ; break ; case Cell.CELL_TYPE_BLANK : value = "" ; break ; case Cell.CELL_TYPE_BOOLEAN : value = String.valueOf(cell.getBooleanCellValue()) ; break ; default : value = null ; break ; } return value ; }
下面是关于Excel的写操作:
@Test public void testWrite() { Workbook workbook = new HSSFWorkbook() ; FileOutputStream fos = null ; try { fos = new FileOutputStream("D:/Project/MAVEN_ANT/poi_1/excel/poiTest.xls") ; Sheet sheet = workbook.createSheet("hello") ; //创建工作溥. Row row = sheet.createRow(0) ; //创建表格的第一行(从0开始) row.setHeightInPoints(30) ; //设置行高 Cell cell = row.createCell(0) ; //创建第一列 CellStyle cellCss = workbook.createCellStyle() ; //创建列样式 cellCss.setAlignment(CellStyle.ALIGN_CENTER) ; cell.setCellValue("hll") ; cell = row.createCell(1) ; //创建第二列 cell.setCellValue("lfd") ; cell.setCellStyle(cellCss) ; workbook.write(fos) ; //输出到Excel } catch (FileNotFoundException e) { e.printStackTrace(); throw new RuntimeException("文件格式错误!请检查文件格式.") ; } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("找不到文件!") ; } finally { if(fos != null) { try { fos.close() ; } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("文件不能关闭") ; } } } }
下面是该示例的项目(基于Maven建立):