WEB开发网
开发学院软件开发Java 使用Apache POI读取Excel文件 阅读

使用Apache POI读取Excel文件

 2009-09-22 00:00:00 来源:WEB开发网   
核心提示: publicstaticStringgetCell(HSSFCellcell){if(cell==null)return"";switch(cell.getCellType()){caseHSSFCell.CELL_TYPE_NUMERIC:returncell.getNum

public static String getCell(HSSFCell cell) {
        if (cell == null)
            return "";
        switch (cell.getCellType()) {
          case HSSFCell.CELL_TYPE_NUMERIC:
              return cell.getNumericCellValue() + "";
          case HSSFCell.CELL_TYPE_STRING:
              return cell.getStringCellValue();
          case HSSFCell.CELL_TYPE_FORMULA:
              return cell.getCellFormula();
          case HSSFCell.CELL_TYPE_BLANK:
              return "";
          case HSSFCell.CELL_TYPE_BOOLEAN:
              return cell.getBooleanCellValue() + "";
          case HSSFCell.CELL_TYPE_ERROR:
             return cell.getErrorCellValue() + "";
         }
         return "";
      }

HSSFCell没有提供时间类型常量,这时候你只能根据自己判断是否要将它转换成时间格式了: cell.getDateCellValue();      

下面是一个简单的例子,你可以参考一下:

/**
 *  打印Excel文件 。 
 * @author vwpolo
 * <p>2009-9-15</p>
 */
public class PrintExcelTest {
  public static void main(String[] args) throws Exception {
    File file = new File("User.xls");
    FileInputStream fint = new FileInputStream(file);
    POIFSFileSystem poiFileSystem = new POIFSFileSystem(fint);
    HSSFWorkbook workbook = new HSSFWorkbook(poiFileSystem);
    HSSFSheet sheet = workbook.getSheetAt(0);
    HSSFRow rowTitle = sheet.getRow(0);
    Iterator<HSSFCell> iterTitle = rowTitle.cellIterator();
    while(iterTitle.hasNext()) {
      System.out.print(iterTitle.next().getStringCellValue()+"  ");
    }
    System.out.println("");
    HSSFRow rowUser = sheet.getRow(1);
    Iterator<HSSFCell> iterUser = rowUser.cellIterator();
    while(iterUser.hasNext()) {
      System.out.print(getCell(iterUser.next())+"  ");
    }
    System.out.println("\n");
    System.out.println("出生日期:"+rowUser.getCell((short)3).getDateCellValue().toLocaleString());
  }
  
  public static String getCell(HSSFCell cell) {
    if (cell == null)
      return "";
    switch (cell.getCellType()) {
      case HSSFCell.CELL_TYPE_NUMERIC:
        return cell.getNumericCellValue() + "";
      case HSSFCell.CELL_TYPE_STRING:
        return cell.getStringCellValue();
      case HSSFCell.CELL_TYPE_FORMULA:
        return cell.getCellFormula();
      case HSSFCell.CELL_TYPE_BLANK:
        return "";
      case HSSFCell.CELL_TYPE_BOOLEAN:
        return cell.getBooleanCellValue() + "";
      case HSSFCell.CELL_TYPE_ERROR:
        return cell.getErrorCellValue() + "";
    }
    return "";
  }
}

这里的User.xls文件时一个模板,

使用Apache POI读取Excel文件 

A1、C1的单元格格式是常规格式,B1、E1的单元格格式是文本,D1的单元格格式是日期

运行上面的例子会输出:

姓名  员工编号  所属公司  出生日期  身份证号码  

张三  000018   上海      32117.0   370684198712066666  

出生日期:1987-12-6 0:00:00

在那个迭代方法中无法对日期类型的判断,所以输出格式存在问题,可以将日期格式额外处理。

上一页  1 2 

Tags:使用 Apache POI

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接