poi读取excel中的数据- 小钳子的日志- 网易博客

poi读取excel中的数据

2010-04-20 11:09:07 阅读24 评论0 字号:

import java.io.File;
import java.io.FileInputStream;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

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();
  }

 }

}

<#--{zx1}日志--> <#--推荐日志--> <#--引用记录--> <#--相关日志--> <#--推荐日志--> <#--推荐阅读--> <#--相关文章 2010.04.29="" by="" yangfan--=""> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构-->
郑重声明:资讯 【poi读取excel中的数据- 小钳子的日志- 网易博客】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——