excel有行和列,根据行列下表,可以锁定单元格cell.
其中,合并单元格需要特殊处理,下面的代码,就是遍历excel,读取其中的全部数据.
package com; import java.io.FileInputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.CellRangeAddress; public class ReadExcel { public static void main(String[] args) { try { Workbook wb = new HSSFWorkbook(new FileInputStream("W:\\a.xls")); Sheet sheet=wb.getSheetAt(0); //下面是处理合并单元格的代码。 //获取当前sheet页中,所有的合并单元格的数量。 int regionsCount = sheet.getNumMergedRegions(); if (regionsCount > 0) { for (int i = 0; i < regionsCount; i++) { CellRangeAddress region = sheet.getMergedRegion(i); //输出单元格的起止。 System.out.println(region.formatAsString()); //获取单元格的起止行和列 int rowFrom = region.getFirstRow(); int rowTo = region.getLastRow(); int cellFrom = region.getFirstColumn(); int cellTo = region.getLastColumn(); //sheet.getRow().getCell 可以获取某行某个单元格。 String hbzhi = sheet.getRow(rowFrom).getCell(cellFrom).toString(); System.out.println(hbzhi); } } //处理合并单元格 end //如果没有合并单元格,可以设置行和列的下标,0开始,循环,使用sheet.getRow(rowFrom).getCell(cellFrom).toString();,可以遍历整个excel。 //如果有合并单元格,请按照上面代码块查询数据。 } catch (Exception e) { e.printStackTrace(); } } }