第二讲
1.创建一个时间格式的单元格
Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿 Sheet sheet=wb.createSheet("第一个Sheet页"); // 创建第一个Sheet页 //第一个单元格 Row row=sheet.createRow(0); // 创建一个行 Cell cell=row.createCell(0); // 创建一个单元格 第1列 cell.setCellValue(new Date()); // 给单元格设置值 //第二个单元格 CreationHelper createHelper=wb.getCreationHelper(); CellStyle cellStyle=wb.createCellStyle(); //单元格样式类 cellStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyy-mm-dd hh:mm:ss")); cell=row.createCell(1); // 第二列 cell.setCellValue(new Date()); cell.setCellStyle(cellStyle); //第三个单元格 cell=row.createCell(2); // 第三列 cell.setCellValue(Calendar.getInstance()); cell.setCellStyle(cellStyle); //最后写到硬盘上 FileOutputStream fileOut=new FileOutputStream("c:\\工作簿.xls"); wb.write(fileOut); fileOut.close();
效果如下:
由于空间不够,所以显示不出来,拉伸一下就可以了。
2.处理不同内容格式的单元格
Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿 Sheet sheet=wb.createSheet("第一个Sheet页"); // 创建第一个Sheet页 Row row=sheet.createRow(0); // 创建一个行 Cell cell=row.createCell(0); // 创建一个单元格 第1列 cell.setCellValue(new Date()); // 给单元格设置值 row.createCell(1).setCellValue(1); row.createCell(2).setCellValue("一个字符串"); row.createCell(3).setCellValue(true); row.createCell(4).setCellValue(HSSFCell.CELL_TYPE_NUMERIC); row.createCell(5).setCellValue(false); FileOutputStream fileOut=new FileOutputStream("c:\\工作簿.xls"); wb.write(fileOut); fileOut.close();
效果如下:
3.遍历工作簿的行和列并获取单元格内容
//创建一个表格文件 InputStream is=new FileInputStream("c:\\二货名单.xls"); //读取文件 POIFSFileSystem fs=new POIFSFileSystem(is); HSSFWorkbook wb=new HSSFWorkbook(fs); HSSFSheet hssfSheet=wb.getSheetAt(0); // 获取第一个Sheet页 if(hssfSheet==null){ return; } // 遍历行Row for(int rowNum=0;rowNum<=hssfSheet.getLastRowNum();rowNum++){ HSSFRow hssfRow=hssfSheet.getRow(rowNum); if(hssfRow==null){ continue; } // 遍历列Cell for(int cellNum=0;cellNum<=hssfRow.getLastCellNum();cellNum++){ HSSFCell hssfCell=hssfRow.getCell(cellNum); if(hssfCell==null){ continue; } System.out.print(" "+getValue(hssfCell)); } System.out.println(); } } private static String getValue(HSSFCell hssfCell){ if(hssfCell.getCellType()==HSSFCell.CELL_TYPE_BOOLEAN){ return String.valueOf(hssfCell.getBooleanCellValue()); }else if(hssfCell.getCellType()==HSSFCell.CELL_TYPE_NUMERIC){ return String.valueOf(hssfCell.getNumericCellValue()); }else{ return String.valueOf(hssfCell.getStringCellValue()); } }
注意一定是要2007版本以上的。2010的话可能识别不了。
二货名单.xls
控制台读出来:
4.文本提取
InputStream is=new FileInputStream("c:\\二货名单.xls"); POIFSFileSystem fs=new POIFSFileSystem(is); HSSFWorkbook wb=new HSSFWorkbook(fs); ExcelExtractor excelExtractor=new ExcelExtractor(wb); excelExtractor.setIncludeSheetNames(false);// 我们不需要Sheet页的名字 System.out.println(excelExtractor.getText());
效果如下:
以上源码如下:http://yunpan.cn/cdBADQY7jS6WP 访问密码 e5cf