2010-04-20 11:09:07 阅读24 评论0 字号:大中小
imp
imp
imp
imp
imp
imp
imp
public class Excel {
public static String getValue(HSSFCell cell) {
String value = "";
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_NUMERIC: // 数值型
if (HSSFDateUtil.isCellDateFormatted(cell)) {
//如果是date类型则 ,获取该cell的date值
value = HSSFDateUtil.getJavaDate(cell.getNumericCellValue())
.toString();
} else {// 纯数字
value = String.valueOf(cell.getNumericCellValue());
}
break;
/* 此行表示单元格的内容为string类型 */
case HSSFCell.CELL_TYPE_STRING: // 字符串型
value = cell.getStringCellValue().toString();
break;
case HSSFCell.CELL_TYPE_FORMULA:// 公式型
//读公式计算值
value = String.valueOf(cell.getNumericCellValue());
if (value.equals("NaN")) {// 如果获取的数据值为非法值,则转换为获取字符串
value = cell.getStringCellValue().toString();
}
break;
case HSSFCell.CELL_TYPE_BOOLEAN:// 布尔
value = " "
+ cell.getBooleanCellValue();
break;
/* 此行表示该单元格值为空 */
case HSSFCell.CELL_TYPE_BLANK: // 空值
value = "";
break;
case HSSFCell.CELL_TYPE_ERROR: // 故障
value = "";
break;
default:
value = cell.getStringCellValue().toString();
}
return value;
}
public static void main(String[] args) {
String excelfile = "f:/aa.xls";
FileInputStream is;
try {
is = new FileInputStream(new File(excelfile));
//构建Workbook对象, 只读Workbook对象
HSSFWorkbook wb = new HSSFWorkbook(is);
//获取工作表中的个数
int sheetNum = wb.getNumberOfSheets();
//打印出工作表的名称
for (int i = 0; i < sheetNum; i++) {
System.out.println(wb.getSheetName(i));
}
//取出{dy}个工作表
HSSFSheet sheet = wb.getSheetAt(0);
//取出{dy}个工作表中的可用的行数
int rows = sheet.getPhysicalNumberOfRows();
System.out.println("取得的行数:" + rows);
//取出{dy}行数据
HSSFRow row = sheet.getRow(0);
// 获得列数
int cells = row.getLastCellNum();
//System.out.println("取得{dy}行的列数:" + cells);
for (int j = 0; j < rows; j++) {
HSSFRow sheetrows = sheet.getRow(j);
for (int k = 0; k < sheetrows.getLastCellNum(); k++) {
HSSFCell cell = sheetrows.getCell((short) k);
if(cell!=null){
System.out.println("第" + j + "行 第" + k + "列的值是"+getValue(cell));
}else{
System.out.println("第" + j + "行 第" + k + "列的值是空的");
}
}
//查询合并的单元格
for (int y = 0; y < sheet.getNumMergedRegions(); y++){
System.out.println("第"+(y+1)+"个合并单元格");
Region region = sheet.getMergedRegionAt(y);
int ro=region.getRowTo()-region.getRowFrom()+1;
int co=region.getColumnTo()-region.getColumnFrom()+1;
System.out.println("起始行:"+region.getRowFrom());
System.out.println("起始列:"+region.getRowTo());
System.out.println("所占行:"+ro);
System.out.println("所占列:"+co);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}