第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何檢查excel列標(biāo)題在apache poi中是否按特定順序排列

如何檢查excel列標(biāo)題在apache poi中是否按特定順序排列

莫回?zé)o 2023-04-26 14:27:32
我必須檢查某些列標(biāo)題名稱是否以特定順序出現(xiàn)在 Excel 工作表中。這些名稱是:名字、姓氏(可選)、電子郵件 ID、電話號(hào)碼、地址(可選)。我需要檢查輸入的 Excel 工作表是否具有必填列以及可選列的任意組合。Ex: First Name, Email Id, Phone No. (All mandatory ones) First Name, Email Id, Phone 總共可能有 4 種情況。我已將列標(biāo)題存儲(chǔ)在數(shù)組列表中。(如果我的問題陳述有有效的方法,請(qǐng)告訴我!)。            public void readAndUpload() throws FileNotFoundException, IOException {    FileInputStream file = new FileInputStream(new File("path.."));    HSSFWorkbook workbook = new HSSFWorkbook(file);    HSSFSheet sheet = workbook.getSheetAt(0);    HSSFRow row = sheet.getRow(0);    Iterator<Cell> cellIterator = row.cellIterator();    ArrayList<String> headerCell = new ArrayList<String>(5);    while(cellIterator.hasNext())    {        Cell cell = cellIterator.next();        headerCell.add(cell.getStringCellValue());    }    ArrayList<String> validHeaders = new ArrayList<>(Arrays.asList("First Name", "Email Id","Phone Number"));    if(headerCell.contains(validHeaders))    {        //validation logic here    }    else    {        System.out.println("Mandatory fields not present");    }    file.close();}
查看完整描述

1 回答

?
郎朗坤

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊

我從您的要求中了解到,您想要驗(yàn)證以下內(nèi)容: 1. 如果 excel 中的標(biāo)題是允許的標(biāo)題(強(qiáng)制和可選)。2. 如果存在強(qiáng)制標(biāo)頭。3. 強(qiáng)制標(biāo)頭是否有序。


這是一種解決方案。


public class HeaderProblem {


    public static void main(String[] args) {

        List<String> headersFromExcel = Arrays.asList("EMail", "Phone", "Address", "Last Name", "First Name");

        System.out.println(validate(headersFromExcel));

    }


    private static boolean validate(List<String> headers) {

        List<String> mandatoryHeaders = Arrays.asList("First Name", "EMail", "Phone");

        List<String> optionalHeaders = Arrays.asList("Last Name", "Address");

        List<String> allHeaders = new ArrayList<>(mandatoryHeaders);

        allHeaders.addAll(optionalHeaders);

        Map<String, Integer> headerIndexMap = IntStream.range(0, headers.size())

                                                    .boxed()

                                                    .collect(Collectors.toMap(i -> headers.get(i), i -> i));



        if(!allHeaders.containsAll(headers)) {

            System.out.println("Some headers exist which are not allowed");

            return false;

        }


        if (!headers.containsAll(mandatoryHeaders)) {

            System.out.println("Mandatory headers are not present");

            return false;

        }


        System.out.println(mandatoryHeaders.stream()

                .map(headerIndexMap::get)

                .collect(Collectors.toList()));


        // Check if the manadatory headers are in order

        Integer result = mandatoryHeaders.stream()

                        .map(headerIndexMap::get)

                        .reduce(-1, (x, hi) -> x < hi ? hi : headers.size());



        if (result == headers.size()) {

            System.out.println("Mandatory headers are not in order");

            return false;

        }

        return true;

    }


}

在這里,我假設(shè) headersFromExcel 字段是從 excel 中提取的標(biāo)題列表。


還有一件事,在您使用的代碼中,


if(headerCell.contains(validHeaders))


在這里,您應(yīng)該使用 containsAll() 而不是 contains(),因?yàn)?contains 會(huì)將傳遞的參數(shù)視為一個(gè)對(duì)象,并將與 ArrayList 的每個(gè)單獨(dú)單元格進(jìn)行比較,并且在您的情況下始終返回 false。


查看完整回答
反對(duì) 回復(fù) 2023-04-26
  • 1 回答
  • 0 關(guān)注
  • 165 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)