把poi-2.5.1.jar poi-contrib-2.5.1.jar加到工程里面
package excel.read;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java.io.FileInputStream;
public class ReadXL {
/** Excel文件的存放位置。注意是正斜线 */
public static String fileToBeRead = "E:/workspace/javaProject/excelPOI/JTest/workbook.xls";
public static void main(String argv[]) {
try {
// 创建对Excel工作簿文件的引用
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));
// 创建对工作表的引用。
// 也可用getSheetAt(int index)按索引引用,
// 在Excel文档中,第一张工作表的缺省索引是0,
// 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);
// 读取左上端单元
System.out.println("sheet数目: " + workbook.getNumberOfSheets());
for (int i = 0; i < workbook.getNumberOfSheets(); i++) {//循环sheet
System.out.println("==========开始第 "+i +" 个sheet============");
HSSFSheet childSheet = workbook.getSheetAt(i);
for(int r=0; r < childSheet.getPhysicalNumberOfRows(); r++) {//循环该 子sheet row
System.out.println("childSheet " + (r+1) + "行数:: " + childSheet.getPhysicalNumberOfRows());
System.out.println("childSheet 单元格的数目:: " + childSheet.getRow(r).getPhysicalNumberOfCells());
for (short c = 0; c < childSheet.getRow(r).getPhysicalNumberOfCells(); c++) {//循环该子sheet行对应的单元格项
HSSFCell cell = childSheet.getRow(r).getCell(c);
System.out.println("cell:: " + cell);
String value = null;
if (cell == null)
continue;
System.out.println("cell.getCellType():: " + cell.getCellType());
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_NUMERIC:
value = "" + cell.getNumericCellValue();
break;
case HSSFCell.CELL_TYPE_STRING:
value = cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_BLANK:
;
break;
default:
}
System.out.println("value :: " + value);
}
}
}
//HSSFRow row = sheet.getRow(0);//行
//HSSFCell cell = row.getCell((short) 0);//单元格
// 输出单元内容,cell.getStringCellValue() 就是取所在单元的值
} catch (Exception e) {
System.out.println("已运行xlRead() : " + e);
}
}
}