POI 操作Excel支持03/07

poi 操作excel ,支持03xls 和07xlsx,通用工具类

 

 /***************************************************************************
  * 创建Workbook
  *
  * @param in
  * @return Workbook
  * @throws IOException
  * @throws InvalidFormatException
  */
 public static Workbook createWorkBook(InputStream in) throws IOException,
   InvalidFormatException {
  if (!in.markSupported()) {
   in = new PushbackInputStream(in, 8);
  }
  if (POIFSFileSystem.hasPOIFSHeader(in)) {
   return new HSSFWorkbook(in);
  }
  if (POIXMLDocument.hasOOXMLHeader(in)) {
   return new XSSFWorkbook(OPCPackage.open(in));
  }
  throw new IllegalArgumentException("你的excel版本目前poi解析不了");
 }

 /***************************************************************************
  * 得到工作表
  *
  * @param book
  * @return
  */
 public static Sheet getSheetFirst(Workbook book) {
  return book.getSheetAt(0);
 }

 /***************************************************************************
  * 得到工作表
  *
  * @param book
  * @return
  */
 public static Sheet getSheetFirst(InputStream in) throws IOException,
   InvalidFormatException {
  Sheet sheet = null;
  if (!in.markSupported()) {
   in = new PushbackInputStream(in, 8);
  }
  if (POIFSFileSystem.hasPOIFSHeader(in)) {
   sheet =  new HSSFWorkbook(in).getSheetAt(0);
  }
  if (POIXMLDocument.hasOOXMLHeader(in)) {
   sheet = new XSSFWorkbook(OPCPackage.open(in)).getSheetAt(0);
  }
  return sheet;
 }

 /***************************************************************************
  * 表头的名称第一位
  *
  * @param sheet
  * @return
  */
 public static String getHeadFirst(Sheet sheet) {
  Row row = sheet.getRow(0);
  if (row != null) {
   return row.getCell(0).getRichStringCellValue().getString();
  }
  return null;
 }

 /***************************************************************************
  * 获取单元格数据
  *
  * @param cell
  * @return String
  * @author
  */
 public static Object getCellValue(Cell cell) {
  if (cell == null) {
   return "";
  }
  Object obj = new Object();
  switch (cell.getCellType()) {
  case Cell.CELL_TYPE_STRING:// 字符串型
   obj = cell.getStringCellValue();
   break;
  case Cell.CELL_TYPE_NUMERIC:// 数值型
   if (DateUtil.isCellDateFormatted(cell)) {// 日期
    obj = cell.getDateCellValue();
   } else {
    Format format = new DecimalFormat("000");// 003类型的
    obj = format.format(cell.getNumericCellValue());
   }
   break;
  case Cell.CELL_TYPE_BOOLEAN:// 布尔型
   obj = String.valueOf(cell.getBooleanCellValue());
   break;
  case Cell.CELL_TYPE_FORMULA:// 公式型
   obj = String.valueOf(cell.getCellFormula());
   break;
  case Cell.CELL_TYPE_ERROR:// 错误
   obj = cell.getErrorCellValue();
   break;
  case Cell.CELL_TYPE_BLANK:// 空值
   obj = "";
   break;
  default:
   break;
  }

  return obj;
 }

 /**
  * 格式化数值按类型
  *
  * @param cell
  * @return object
  */
 public static String convNUMERIC(Cell cell, String type) {
  if (cell == null) {
   return "";
  }
  if (Cell.CELL_TYPE_NUMERIC == cell.getCellType()) {
   Format format = new DecimalFormat(type);
   return format.format(cell.getNumericCellValue());
  } else {
   return "";
  }
 }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值