excel上传并读取

来源:互联网 发布:网络真人赌博有猫腻吗 编辑:程序博客网 时间:2024/06/08 08:34
/**
     * 根据上传的文件,文件名称,sheetName得到sheet
     *
     * @param fis
     * @param fileName
     *            为了判断是excel2007,还是excel2003的格式
     * @param sheetName
     * @return
     */
    private Sheet getSheet(InputStream fis, String fileName, String sheetName) {

        if (fis == null || fileName == null || "".equals(fileName)) {

            return null;
        }

        try {

            Workbook wb = null;
            // excel2007格式
            if (fileName.endsWith("xlsx")) {

                wb = new XSSFWorkbook(fis);

            } else if (fileName.endsWith("xls")) {// excel 2003格式

                wb = new HSSFWorkbook(fis);
            }

            return wb.getSheet(sheetName);

        } catch (Exception e) {

            LogUtil.info("App", this.getClass().getSimpleName() + ".getSheet()方法报错为:" +e.getMessage());
            
            return null;
        }

    }


    /**
     * 读取单程直飞
     *
     * @param fis
     * @param fileName
     * @return
     */
    public List<Object> getOneWayDirects(Sheet sheet) {

        List<Object> result=new ArrayList<Object>();
        
        List<OneWayDirect> oneWayDirects = new ArrayList<OneWayDirect>();
        
        List<String> errors=new ArrayList<String>();

        try {

            if (null == sheet) {
                
                errors.add("目前是导入单程直飞,上传的excel工作表名称不是" +ONEWAYDIRECT);
                
                result.add(errors);
                result.add(oneWayDirects);

                return result;
            }

            int rowNum = sheet.getLastRowNum() + 1;

            for (int i = 1; i < rowNum; i++) {

                try {

                    Row row = sheet.getRow(i);

                    if (row == null) {

                        continue;
                    }
                    // 获取每一行中,所有列的值
                    String[] cellData = getCellData(row);

                    // 如果此列的第一个值为*,那么证明以下列都为描述部分,不需要转换
                    if ("*".equals(cellData[0])) {

                        break;
                    }

                    // 将每一行的数据转换为对象
                    OneWayDirect oneWayDirect = toOneWayDirect(cellData,errors);

                    if (oneWayDirect != null) {

                        oneWayDirects.add(oneWayDirect);
                    }

                } catch (Exception e) {

                    LogUtil.info("App",
                            "==================================ExcelUtil.getOneWayDirects()"
                                    + e.getMessage() + "=======继续循环");

                    continue;
                }

            }

        } catch (Exception e) {

            e.printStackTrace();
        }
        
        result.add(errors);
        result.add(oneWayDirects);

        return result;
    }

0 0
原创粉丝点击