poi 方法java 读取 excel 2003 或 excel 2007ITeyeitjob - AG环亚娱乐

poi 方法java 读取 excel 2003 或 excel 2007ITeyeitjob

2019-02-01 10:58:04 | 作者: 思菱 | 标签: 文件,办法,总行 | 浏览: 6591

public class POIExcelUtil
{
    /** 总行数 */
    private int totalRows = 0;
    
    /** 总列数 */
    private int totalCells = 0;
    
    /** 结构办法 */
    public POIExcelUtil()
    {}
    
    /**
     *  ul
     *  li Description:[依据文件名读取excel文件] /li
     *  li Created by [Huyvanpull] [Jan 20, 2010] /li
     *  li Midified by [modifier] [modified time] /li
     *  ul
     * 
     * @param fileName
     * @return
     * @throws Exception
     */
    public List ArrayList String  read(String fileName)
    {
        List ArrayList String  dataLst = new ArrayList ArrayList String ();
        
        /** 查看文件名是否为空或许是否是Excel格局的文件 */
        if (fileName  null || !fileName.matches("^.+\\.(?i)((xls)|(xlsx))$"))
        {
            return dataLst;
        }
        
        boolean isExcel2003 = true;
        /** 对文件的合法性进行验证 */
        if (fileName.matches("^.+\\.(?i)(xlsx)$"))
        {
            isExcel2003 = false;
        }
        
        /** 查看文件是否存在 */
        File file = new File(fileName);
        if (file  null || !file.exists())
        {
            return dataLst;
        }
        
        try
        {
            /** 调用本类供给的依据流读取的办法 */
            dataLst = read(new FileInputStream(file), isExcel2003);
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
        
        /** 回来最终读取的成果 */
        return dataLst;
    }
    
    /**
     *  ul
     *  li Description:[依据流读取Excel文件] /li
     *  li Created by [Huyvanpull] [Jan 20, 2010] /li
     *  li Midified by [modifier] [modified time] /li
     *  ul
     * 
     * @param inputStream
     * @param isExcel2003
     * @return
     */
    public List ArrayList String  read(InputStream inputStream,
            boolean isExcel2003)
    {
        List ArrayList String  dataLst = null;
        try
        {
            /** 依据版别挑选创立Workbook的办法 */
            Workbook wb = isExcel2003 ? new HSSFWorkbook(inputStream)
                    : new XSSFWorkbook(inputStream);
            dataLst = read(wb);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        return dataLst;
    }
    
    /**
     *  ul
     *  li Description:[得到总行数] /li
     *  li Created by [Huyvanpull] [Jan 20, 2010] /li
     *  li Midified by [modifier] [modified time] /li
     *  ul
     * 
     * @return
     */
    public int getTotalRows()
    {
        return totalRows;
    }
    
    /**
     *  ul
     *  li Description:[得到总列数] /li
     *  li Created by [Huyvanpull] [Jan 20, 2010] /li
     *  li Midified by [modifier] [modified time] /li
     *  ul
     * 
     * @return
     */
    public int getTotalCells()
    {
        return totalCells;
    }
    
    /**
     *  ul
     *  li Description:[读取数据] /li
     *  li Created by [Huyvanpull] [Jan 20, 2010] /li
     *  li Midified by [modifier] [modified time] /li
     *  ul
     * 
     * @param wb
     * @return
     */
    private List ArrayList String  read(Workbook wb)
    {
        List ArrayList String  dataLst = new ArrayList ArrayList String ();
        
        /** 得到第一个shell */
        Sheet sheet = wb.getSheetAt(0);
        this.totalRows = sheet.getPhysicalNumberOfRows();
        if (this.totalRows  = 1   sheet.getRow(0) != null)
        {
            this.totalCells = sheet.getRow(0).getPhysicalNumberOfCells();
        }
        
        /** 循环Excel的行 */
        for (int r = 0; r   this.totalRows; r++)
        {
            Row row = sheet.getRow(r);
            if (row  null)
            {
                continue;
            }
            
            ArrayList String  rowLst = new ArrayList String
            /** 循环Excel的列 */
            for (short c = 0; c   this.getTotalCells(); c++)
            {
                Cell cell = row.getCell(c);
                String cellValue = "";
                if (cell  null)
                {
                    rowLst.add(cellValue);
                    continue;
                }
                
                /** 处理数字型的,主动去零 */
                if (Cell.CELL_TYPE_NUMERIC  cell.getCellType())
                {
                    /** 在excel里,日期也是数字,在此要进行判别 */
                    if (HSSFDateUtil.isCellDateFormatted(cell))
                    {
                        cellValue = DateUtil.get4yMdHms(cell.getDateCellValue());
                    }
                    else
                    {
                        cellValue = getRightStr(cell.getNumericCellValue() + "");
                    }
                }
                /** 处理字符串型 */
                else if (Cell.CELL_TYPE_STRING  cell.getCellType())
                {
                    cellValue = cell.getStringCellValue();
                }
                /** 处理布尔型 */
                else if (Cell.CELL_TYPE_BOOLEAN  cell.getCellType())
                {
                    cellValue = cell.getBooleanCellValue() + "";
                }
                /** 其它的,非以上几种数据类型 */
                else
                {
                    cellValue = cell.toString() + "";
                }
                
                rowLst.add(cellValue);
            }
            dataLst.add(rowLst);
        }
        return dataLst;
    }
    
    /**
     *  ul
     *  li Description:[正确地处理整数后主动加零的状况] /li
     *  li Created by [Huyvanpull] [Jan 20, 2010] /li
     *  li Midified by [modifier] [modified time] /li
     *  ul
     * 
     * @param sNum
     * @return
     */
    private String getRightStr(String sNum)
    {
        DecimalFormat decimalFormat = new DecimalFormat("#.000000");
        String resultStr = decimalFormat.format(new Double(sNum));
        if (resultStr.matches("^[-+]?\\d+\\.[0]+$"))
        {
            resultStr = resultStr.substring(0, resultStr.indexOf("."));
        }
        return resultStr;
    }
    
    /**
     *  ul
     *  li Description:[测验main办法] /li
     *  li Created by [Huyvanpull] [Jan 20, 2010] /li
     *  li Midified by [modifier] [modified time] /li
     *  ul
     * 
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception
    {
        List ArrayList String  dataLst = new POIExcelUtil()
                .read("e:/Book1_shao.xls");
        for (ArrayList String  innerLst : dataLst)
        {
            StringBuffer rowData = new StringBuffer();
            for (String dataStr : innerLst)
            {
                rowData.append(",").append(dataStr);
            }
            if (rowData.length()   0)
            {
                System.out.println(rowData.deleteCharAt(0).toString());
            }
        }
    }
}

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表AG环亚娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章