这是一个经常用到的功能,记录一下,以后直接复制粘贴就行了。简单说一下注意的地方,后面直接上代码。
理论及要点:
1、根据InputStream创建Workbook
Workbook wb = new HSSFWorkbook(is);//is是InputStream。2003版本 Workbook wb = new XSSFWorkbook(is);//is是InputStream。2007版本
2、根据Workbook创建Sheet
Sheet sheet = wb.getSheetAt(0);
3、根据Sheet创建Row
for(int rowNum=1;rowNum<=sheet.getLastRowNum();rowNum++) { Row row = sheet.getRow(rowNum); ... ... }
4、根据Row创建Cell
for(int rowNum=1;rowNum<=sheet.getLastRowNum();rowNum++) { Row row = sheet.getRow(rowNum); for(int cellNum=0;cellNum<row.getLastCellNum();cellNum++) { Cell cell = row.getCell(cellNum); ... ... } }
5、读取Cell中的内容
5.1)根据Cell的格式判断用哪种方式读,共5中方式,0数值(包含数值和日期)、1字符串、2公式、3空白、4布尔、5错误
int cellType = cell.getCellType();
5.2)在数值类型中需判断是否日期类型,如果是日期类型需要转化,如果是数值类型,去掉默认的“.0”和科学计数法的“,”
if (HSSFDateUtil.isCellDateFormatted(cell)) { //日期 Date date= cell.getDateCellValue(); }else { //数值 double dvalue = cell.getNumericCellValue(); NumberFormat numberFormat = NumberFormat.getInstance(); //去除默认的“.0” String svalue = numberFormat.format(dvalue); if(value.indexOf(",") > -1) { //去除科学计数法的“,” svalue = value.replaceAll(",","");
} }
5.3)各种类型获取内容方法如下
cell.getDateCellValue();//日期 cell.getNumericCellValue();//数值 cell.getStringCellValue()//字符串 cell.getBooleanCellValue();//布尔 cell.getCellFormula();//公式 cell.getErrorCellValue();//错误
代码后补