接口自動化之根據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