Как перебрать ArrayList и получить данные, которые были прочитаны из Excel - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть лист Excel с username, emailIDs, phone и location в разных ячейках.Я добавил все значения ячеек в Arraylist.Однако теперь мне нужно перейти к индексам, чтобы каждый раз читать имя пользователя и передавать его в текстовые поля в другом приложении.

Я написал код до добавления в ArrayList, но не уверен, как читать каждое значение из списка каждыйвремя и застрял здесь.

Значит, в первый раз я должен прочитать имя пользователя как "A", идентификатор электронной почты "ab@c.com", номер телефона как "12333", местоположение как "xzy" из списка.Когда цикл продолжится во второй раз, я смогу прочитать имя пользователя "B" и сопоставленные с ним значения.

public  ArrayList<String>  getdata() throws IOException {

    FileInputStream fis = new FileInputStream("C:\\Users\\vnaditya\\Downloads\\Book2.xlsx");
    XSSFWorkbook XS = new XSSFWorkbook(fis);

    int numberofsheets = XS.getNumberOfSheets();

    for(int i=0; i< numberofsheets; i++) {
        if(XS.getSheetName(i).equalsIgnoreCase("Sheet1")) {
            XSSFSheet XSS = XS.getSheetAt(i);

            Iterator<Row> r = XSS.iterator();
            while (r.hasNext()) {
                Row row = r.next();
                Iterator <Cell> cell = row.cellIterator();

                while (cell.hasNext()) {
                    Cell cellvalue = cell.next();

                    String message = cellvalue.getStringCellValue();
                    System.out.println(message);

                    a.add(cellvalue.getStringCellValue());
                    // System.out.println(a);
                    // System.out.println(a.size());
                 }
            }
        }
    }    

Ожидается: необходимо каждый раз читать имя пользователя и другие значения ячеек.

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Вы можете создать класс User для хранения информации о каждом пользователе:

class User {
    private String username, emailIDs, phone, location;

    public User(String username, String emailIDs, String phone, String location) {
        this.username = username;
        this.emailIDs = emailIDs;
        this.phone = phone;
        this.location = location;
    }

    // Getters/Setters

}

Затем прочитать каждую строку внутри объекта User и вернуть List<User>

public static List<User> getdata() throws IOException {
    List<User> data = new ArrayList<>();

    FileInputStream fis = new FileInputStream("C:\\Users\\vnaditya\\Downloads\\Book2.xlsx");
    XSSFWorkbook XS = new XSSFWorkbook(fis);
    int numberofsheets = XS.getNumberOfSheets();

    for (int i = 0; i < numberofsheets; i++) {
        if (XS.getSheetName(i).equalsIgnoreCase("Sheet1")) {

            XSSFSheet XSS = XS.getSheetAt(i);
            Iterator<Row> r = XSS.iterator();

            String username, emailIDs, phone, location;
            User user;
            while (r.hasNext()) {
                Row row = r.next();
                username = row.getCell(0).getStringCellValue();
                emailIDs = row.getCell(1).getStringCellValue();
                phone = row.getCell(2).getStringCellValue();
                location = row.getCell(3).getStringCellValue();
                user = new User(username, emailIDs, phone, location);
                data.add(user);
            }
        }
    }
    return data;
}
1 голос
/ 26 апреля 2019

Идеальным решением здесь было бы создание пользовательского класса (например, «Пользователь») со всеми необходимыми полями, например, имя пользователя / идентификатор / адрес электронной почты и т. Д. С соответствующими методами получения и установки.Затем для каждой строки, которую вы анализируете в Excel, вы можете создать новый объект User, сохраняющий соответствующие значения для него, и в конечном итоге добавить его в ArrayList<User>.Затем вы можете легко перебрать его и получить значения для каждого объекта User по мере необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...