繁体   English   中英

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

[英]How to loop through ArrayList and get data which was read from Excel

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

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

意思是,我第一次应该从列表中读取用户名“ A”,电子邮件ID“ 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());
                 }
            }
        }
    }    

预期:每次需要读取用户名和其他单元格值。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM