Java Excel文件导入到HashMap HSSFWorkbook(xls)和 XSSFWorkbook (xlsx)

参考链接https://www.cnblogs.com/wobuchifanqie/p/7685038.html

package com.blue.pem.client.util;

import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;




public class ObjectExcelRead {

    /**
     * @param filepath //文件路径
     * @param filename //文件名
     * @param startrow //开始行号
     * @param startcol //开始列号
     * @param sheetnum //sheet
     * @return list
     */
    
    /*读取xls文件*/
    public static List<Map<Object, Object>> parse(HSSFWorkbook wb)
  {
    List<Map<Object, Object>> listMap = new ArrayList<Map<Object, Object>>();
    List<Object> keyList = new ArrayList<Object>();
    try {
      HSSFSheet sheet = wb.getSheetAt(0);
      int rowNum = sheet.getLastRowNum();
      for (int i = 0; i < rowNum; i++)
        if (i == 0) {
          HSSFRow row = sheet.getRow(i);
          int cellNum = row.getLastCellNum();
          for (int j = 0; j < cellNum; j++) {
            Object obj = getCellValue(row.getCell(j));
            keyList.add(obj);
          }
        } else {
          HSSFRow row = sheet.getRow(i);
          if (checkRowNull(row) != 10)
          {
            Map<Object, Object> map = new HashMap<Object, Object>();
            int cellNum = row.getLastCellNum();
            for (int j = 0; j < cellNum; j++) {
              Object obj = getCellValue(row.getCell(j));
              map.put(keyList.get(j), obj);
            }
            listMap.add(map);
          }
        }
      return listMap;
    } catch (Exception e) {
      e.printStackTrace();
    }return listMap;
  }
  
 //读取xlsx数据
  public static List<Map<Object, Object>> parse(XSSFWorkbook wb)
  {
    List<Map<Object, Object>> listMap = new ArrayList<Map<Object, Object>>();
    List<Object> keyList = new ArrayList<Object>();
    try {
      XSSFSheet sheet= wb.getSheetAt(0);
      int rowNum = sheet.getLastRowNum();
      for (int i = 0; i < rowNum; i++)
        if (i == 0) {
          XSSFRow  row = sheet.getRow(i);
          int cellNum = row.getLastCellNum();
          for (int j = 0; j < cellNum; j++) {
            Object obj = getCellValue(row.getCell(j));
            keyList.add(obj);
          }
        } else {
          XSSFRow  row = sheet.getRow(i);
          if (checkRowNull(row) != 10)
          {
            Map<Object, Object> map = new HashMap<Object, Object>();
            int cellNum = row.getLastCellNum();
            for (int j = 0; j < cellNum; j++) {
              Object obj = getCellValue(row.getCell(j));
              map.put(keyList.get(j), obj);
            }
            listMap.add(map);
          }
        }
      return listMap;
    } catch (Exception e) {
      e.printStackTrace();
    }return listMap;
  }
  

  public static int checkRowNull(HSSFRow row)
  {
    int num = 0;
    Iterator<?> iterator = row.iterator();
    while (iterator.hasNext()) {
      Cell cell = (Cell)iterator.next();
      if ((cell == null) || (cell.getCellType() == 3)) {
        num++;
      }
    }
    return num;
  }


  public static int checkRowNull(XSSFRow  row)
  {
    int num = 0;
    Iterator<?> iterator = row.iterator();
    while (iterator.hasNext()) {
      Cell cell = (Cell)iterator.next();
      if ((cell == null) || (cell.getCellType() == 3)) {
        num++;
      }
    }
    return num;
  }

public static Object getCellValue(Cell cell) {
    if ((cell == null) || (cell.getCellType() == 3)) {
      return null;
    }
    Object obj = null;
    switch (cell.getCellType()) {
    case 1:
      obj = cell.getStringCellValue();
      break;
    case 0:
      obj = Double.valueOf(cell.getNumericCellValue());
      break;
    case 2:
      obj = cell.getCellFormula();
      break;
    case 4:
      obj = Boolean.valueOf(cell.getBooleanCellValue());
      break;
    case 3:
    }

    return obj;
  }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值