开发者社区> 问答> 正文

求一个poi的封装好的工具类

求大神给一个poi的封装好的工具类;就是用的时候传进去一个实现类方法和excel名字,以前的硬盘丢了,谢谢大神!

展开
收起
蛮大人123 2016-03-23 14:05:31 2836 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪
    @Test
    public void getCheckInPersonList(){
    String filePath = new String("E:\2014年龙居山9月考勤.xls");
    File file = new File(filePath);
    if(file.exists()){
    if(file.getName() != null){
    String suffix = file.getName().substring(file.getName().lastIndexOf(".")+1);
    if("xls".equals(suffix)) 
    for (CheckInPersonBean p : readXLS(file)) {
    System.out.println("ID:"+p.getId()+" 单位:"+p.getUnit()+" 姓名:"+p.getName()+" 时间:"+p.getWorkDate()+" 上班打卡时间:"+p.getWorkStartTime()+" 下午打卡时间:"+p.getWorkEndTime());
    }
    } 
    }
    }
    public List<CheckInPersonBean> readXLS(File file){
        List<CheckInPersonBean> personBeanList = new ArrayList<CheckInPersonBean>();
        try {
            InputStream is = new FileInputStream(file);
            HSSFWorkbook workbook = new HSSFWorkbook(is);
            if(workbook != null){
                //getNumberOfSheets 得到工作表数量
                //System.out.println(workbook.getNumberOfSheets()+"工作表数量");
                for(int i=0;i<workbook.getNumberOfSheets();i++){
                    //getSheetAt(i) 循环得到第i张工作表
                    HSSFSheet sheet = workbook.getSheetAt(i);
                    if(sheet != null){
                        //getLastRowNum() 得到工作表中最后一行号
                        //System.out.println("第"+(i+1)+"张表最后一个行号是:"+sheet.getLastRowNum());
                        CheckInPersonBean personBean = null;
                        for(int j=1;j<=sheet.getLastRowNum();j++){
                            //getRow(j) 得到第j行数据
                            HSSFRow row = sheet.getRow(j);
                            //得到行最后一个单元格数字    getLastCellNum  该表中第j行最后一个单元格号(只要是单元格就计算,不论内值是否有效)
                            if(row != null && row.getLastCellNum() >= 9){
                                personBean = new CheckInPersonBean();
                                setData(row.getCell(0), personBean, "i");
                                personBean.setUnit(String.valueOf(row.getCell(1)));
                                personBean.setName(String.valueOf(row.getCell(4)));
                                setData(row.getCell(5), personBean, "y");
                                setData(row.getCell(6), personBean, "t");
                                setData(row.getCell(8), personBean, "t");
                                personBeanList.add(personBean);
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            System.err.println(e);
        }
        return personBeanList;
    }
    public Object setDataByType(HSSFCell cell,String methodName,Class<?> paramType,Object obj){
        try {
            Class<?> clazz = obj.getClass();
            Method method = clazz.getMethod(methodName,paramType);
            switch (cell.getCellType()) {
                //0  double, 1 String 3 空白,4 boolean 5 错误
                case 0: 
                    if("setId".equals(methodName)) method.invoke(obj, String.valueOf((int)cell.getNumericCellValue()));
                    break;
                case 1: method.invoke(obj, cell.getStringCellValue()); break;
                case 3: method.invoke(obj, String.valueOf(cell)); break;
                case 4: method.invoke(obj, cell.getBooleanCellValue()); break;
                case 5: method.invoke(obj, ""); break;
                default:
                    method.invoke(obj, new SimpleDateFormat("yyyy-MM-dd"),cell);
                    break;
            }
        } catch (Exception e) {
        }
        return obj;
    }
    public Class<?> getClazz(HSSFCell cell){
        switch (cell.getCellType()) {
            case 0: return double.class;
            case 1: return String.class;
            case 3: return String.class;
            case 4: return boolean.class; 
            case 5: return String.class; 
            default:
                break;
        }
        return Date.class;
    }
    //setDataByType(row.getCell(0), "setId",getClazz(row.getCell(0)),personBean);
    
    public void setData(HSSFCell cell,CheckInPersonBean bean,String sign){
        if("i".equals(sign)){
            if(cell.getCellType() == cell.CELL_TYPE_NUMERIC && cell != null){
                bean.setId(String.valueOf((int)cell.getNumericCellValue()));
            }
        }else if("y".equals(sign)){
            if(cell != null && cell.getCellType() == cell.CELL_TYPE_STRING){
                try {
                    bean.setWorkDate(new SimpleDateFormat("yyyy-MM-dd").parse((String.valueOf(cell).replace(".", "-"))));
                } catch (ParseException e) {
                    //转换错误,抛出异常
                }
            }
        }else{
            if(cell != null && cell.getCellType() == cell.CELL_TYPE_STRING){
                try {
                    bean.setWorkStartTime(new SimpleDateFormat("mm:HH:ss").parse((String.valueOf(cell))));
                } catch (ParseException e) {
                    //转换错误,抛出异常
                }
            }
        }
    }
    }
    2019-07-17 19:10:54
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载