javaAPI-poi读取Excel文件内容

【第一次发博客】项目中遇到需要读取Excel文件内容,网上查了一波资料,发现poi比较好用,记录一下。

实现了一个小DEMO,只取了第一个sheet,该函数参数为文件地址,返回一个二维list,并兼容了两种Excel格式。附代码:


import org.apache.poi.hssf.usermodel.HSSFDateUtil;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.*;
public static ArrayList<ArrayList> readExcelData(String dataPath) throws IOException {        ArrayList<Map> resultData = new ArrayList<>();        FileInputStream fis = new FileInputStream(dataPath);        Workbook workbook = null;        //判断excel的两种格式xls,xlsx        if(dataPath.toLowerCase().endsWith("xlsx")){            workbook = new XSSFWorkbook(fis);        }else if(dataPath.toLowerCase().endsWith("xls")){            workbook = new HSSFWorkbook(fis);        }            //得到第1个sheet            Sheet sheet = workbook.getSheetAt(0);            //得到行的迭代器            Iterator<Row> rowIterator = sheet.iterator();            //循环每一行            while (rowIterator.hasNext())            {                //得到一行对象                Row row = rowIterator.next();                //跳过第一行标题                if(row.getRowNum()==0)                {                    continue;                }                ArrayList<Object> cellData= new ArrayList<>();                //循环每一列                for(int j=0;j<row.getLastCellNum();j++)                {                    //得到单元格对象                    Cell cell = row.getCell(j);                    //检查数据类型                    switch(cell.getCellTypeEnum()){                        case STRING:                            cellData.add(cell.getStringCellValue());                            break;                        case BLANK:                            cellData.add("");                            break;                        case NUMERIC:                            if(HSSFDateUtil.isCellDateFormatted(cell)) //日期判断                            {                                SimpleDateFormat sdf = null;                                sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");                                Date date = cell.getDateCellValue();                                cellData.add(sdf.format(date));                            }                            else{   //不是日期则为数字                                cellData.add(cell.getNumericCellValue());                            }                            break;                    }                }                resultData.add(cellData);            }        fis.close();        return resultData;    }

用最多的梦面对未来

javaAPI-poi读取Excel文件内容

相关文章:

你感兴趣的文章:

标签云: