接口自动化之根据excel文件的sheet名称获取索引读取文件


1、在pox.xml文件中导入easypoi依赖

<!-- https://mvnrepository.com/artifact/cn.afterturn/easypoi-base -->
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>4.2.0</version>
        </dependency>

2、看代码,直接使用即可,没有写注释,这里的Map是我之前创建好的,为了实现接口自动化,

这里是读取excel文件的sheet名称在保存到Map中,为了等下方便使用

 /**
     * 把excel文件的sheet名称保存到List。再把list保存到Map中
     *
     * @param fileName
     */
    public static void setSheetToList(String fileName) {
        List<String> list = new ArrayList();
        OPCPackage opcPackage = null;
        try {
            opcPackage = OPCPackage.open(new FileInputStream(fileName));
        } catch (InvalidFormatException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        XSSFReader xssfReader = null;
        try {
            xssfReader = new XSSFReader(opcPackage);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (OpenXML4JException e) {
            e.printStackTrace();
        }
        Iterator sheets = null;
        try {
            sheets = xssfReader.getSheetsData();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InvalidFormatException e) {
            e.printStackTrace();
        }
        if (sheets instanceof XSSFReader.SheetIterator) {
            XSSFReader.SheetIterator sheetIterator = (XSSFReader.SheetIterator) sheets;
            while (sheetIterator.hasNext()) {
                InputStream inputStream = sheetIterator.next();
                list.add(sheetIterator.getSheetName());
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        try {
            opcPackage.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Base.sheetAllName.put(fileName, list);
    }

 3、根据sheet名称所在的索引读取文件

    /**
     * 读取excel文件
     *
     * @param sheetName
     * @param fileName
     * @param object
     * @return
     */
    public static List getExcel(String sheetName, String fileName, Object object) {
        ImportParams importParams = new ImportParams();
        if (Base.sheetAllName.get(fileName) == null) {
            setSheetToList(fileName);
        }
        List<String> sheetNameList = Base.sheetAllName.get(fileName);
        for (int i = 0; i < sheetNameList.size(); i++) {
            if (StringUtils.equals(sheetNameList.get(i), sheetName)) {
                importParams.setStartSheetIndex(i);
                break;
            } else if (i == sheetNameList.size() - 1) {
                System.out.println("没有匹配,请传入正确表名");
            }
        }
        return ExcelImportUtil.importExcel(new File(fileName), object.getClass(), importParams);
    }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM