如何遍历ArrayList并获取从Excel读取的数据

时间:2019-04-26 07:57:42

标签: java excel iterator

我有一个Excel工作表,其中在不同的单元格中包含usernameemailIDsphonelocation。我已经将所有单元格值添加到Arraylist中。但是,现在我需要遍历索引以每次读取用户名并将其传递给其他应用程序中的文本框。

我已经编写了代码,直到将其添加到ArrayList中,但是不确定每次如何从列表中读取每个值并停留在这里。

意味着,我第一次应该从列表中读取用户名“ A”,电子邮件ID“ a.b@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 个答案:

答案 0 :(得分:1)

这里的理想解决方案是使用所需的所有字段(例如,用户名/ id / email等)以及相关的getters和setters方法创建一个自定义类(例如“ User”)。然后,对于从Excel解析的每一行,您可以创建一个新的User对象,为它存储相应的值,并最终将其添加到ArrayList<User>中。然后,您可以轻松地对其进行迭代,并根据需要获取每个User对象的值。

答案 1 :(得分:1)

您可以创建一个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;
}