当前位置: 首页 > 知识库问答 >
问题:

如何循环遍历ArrayList并从Excel中读取数据

虞华翰
2023-03-14

我有Excel表格,在不同的单元格中有用户名、电子邮件ID、电话和位置。我已将所有单元格值添加到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个答案

常雅达
2023-03-14

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

饶德本
2023-03-14

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

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;
}

 类似资料:
  • 问题内容: 我需要遍历一个post数组并对其求和。 但是我不知道从哪里开始。 问题答案: 这是您的操作方式: 这会照顾传入的变量和数组。

  • 问题内容: 我想知道是否有人可以帮助我创建一个while循环来遍历几个数据库,以便从两列的一个表中获取数据。这是我到目前为止所做的。什么都行不通,因为我不知道如何针对我从每个数据库查询的表来使select语句在每个数据库中正常工作(dbo.tbldoc) 问题答案: 我会考虑使用sp_MSForEachDB,这要容易得多… 编辑:

  • 我的Flutter项目中有一个Dart枚举,如下所示: 如果我有一些随机枚举状态,如,我如何迭代到下一个枚举(而不需要做一些事情,如用开关语句映射它们)? 我在这个,这个和这个的帮助下找到了答案,所以我把它贴在下面。

  • 问题内容: 我正在尝试遍历以下内容 我到目前为止所得到的: 有任何想法吗? 问题答案: 在您的代码中,元素是JSON对象的数组,而不是JSON对象本身。元件,和是JSON的一部分内部对象JSON阵列。 您需要遍历数组 版画 我不知道您的代码片段来自何处。

  • 问题内容: 我有需要解码的JSON产品清单: 在使用PHP将其解码后,我不知道输出是哪种结构。我以为它是一个数组,但是在我要求它后说它是“ 0”。如何遍历这些数据,以便获得列表中每个产品的属性。 谢谢! 问题答案: 要将json转换为数组,请使用

  • 我正在MST上的CLRS中尝试ch23,这里有一个问题: 给定一个图G和一个最小生成树T,假设我们减少不在T中的一条边的权重。给出了在修改图中求最小生成树的算法。 我找到的一个解决方案是在中添加此新更改的边,然后在T中创建一个简单的循环,遍历此循环并删除此循环中的最大权重边,瞧,找到了新更新的MST! 我的问题是,如何在这个简单循环中只遍历节点?因为如果我在中从这个新添加的边的一个endpoint