java - 从Excel中读取数据并写入列表

标签 java excel

我想将数据获取到List并显示它。但是输出显示了4次。 我的 excel 文件包含 4 数据。 我想获得一张记录。我的代码是

public static List readDataFromExcel() throws IOException{
        String filename = "path";

        List sheetData = new ArrayList();

        FileInputStream fis = null;
        try {

            fis = new FileInputStream(filename);

            XSSFWorkbook workbook = new XSSFWorkbook(fis);
            XSSFSheet sheet = workbook.getSheetAt(0);

            Iterator rows = sheet.rowIterator();
            while (rows.hasNext()) {
                XSSFRow row = (XSSFRow) rows.next();
                Iterator cells = row.cellIterator();

                List data = new ArrayList();
                while (cells.hasNext()) {
                    XSSFCell cell = (XSSFCell) cells.next();
                    String value=" ";
                    switch (cell.getCellType()) 
                    {
                        case Cell.CELL_TYPE_NUMERIC:
                            value = BigDecimal.valueOf(cell.getNumericCellValue()).toPlainString();
                            data.add(value);
                            break;
                        case Cell.CELL_TYPE_STRING:
                            value=cell.getStringCellValue();
                            data.add(value);
                            break;
                        case Cell.CELL_TYPE_BLANK:
                            value = " ".toString();
                            data.add(value);
                            break;
                        case Cell.CELL_TYPE_BOOLEAN:
                            value = Boolean.valueOf(cell.getBooleanCellValue()).toString();
                            data.add(value);
                            break;
                    }

                    sheetData.add(data);

                }

                fis.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    return sheetData;
    }

主要方法

public static void main(String[] args) throws IOException {

    List serverdetailsList = ReadDataFromExcel.readDataFromExcel();
    List oneserverdetailsList = new ArrayList();

        for (int i = 0; i < serverdetailsList.size(); i++) {

            System.out.println(serverdetailsList.get(i));

        }

    }

输出图像 enter image description here

Excel 屏幕截图 enter image description here

最佳答案

我发现您将内部 ArrayList(data) 添加到主 arrayList (sheetdata) 中的次数与找到单元格的次数相同。

该方法应该是

 while (rows.hasNext()) {
            XSSFRow row = (XSSFRow) rows.next();
            Iterator cells = row.cellIterator();

            List data = new ArrayList();       
   while (cells.hasNext()) {
                XSSFCell cell = (XSSFCell) cells.next();
                String value=" ";
                switch (cell.getCellType()) 
                {
                    case Cell.CELL_TYPE_NUMERIC:
                      value =                BigDecimal.valueOf(cell.getNumericCellValue()).toPlainString();
                        data.add(value);
                        break;
                    case Cell.CELL_TYPE_STRING:
                        value=cell.getStringCellValue();
                        data.add(value);
                        break;
                    case Cell.CELL_TYPE_BLANK:
                        value = " ".toString();
                        data.add(value);
                        break;
                    case Cell.CELL_TYPE_BOOLEAN:
                        value = Boolean.valueOf(cell.getBooleanCellValue()).toString();
                        data.add(value);
                        break;
                }

                //sheetData.add(data);

            }
       sheetData.add(data);
      fis.close();
      }

关于java - 从Excel中读取数据并写入列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37760923/

相关文章:

java - 批量消费JMS消息

vba - 如何在更改下拉菜单时在 VBA 中从 Excel 运行 SQL 查询

java - Spring JPA REST 按嵌套属性排序

java - 同一jvm中两个应用程序的静态变量冲突

具有动态数据的 Java JFreeChart

excel - Excel 何时以及如何重新计算其公式?

C# 加载 xlsx 文件性能不好

excel - 如何循环遍历表标题以填充组合框下拉列表?

Excel公式查找文本并在同一单元格中输入回车

java - 还有一个 mediaPlayer IllegalStateException : screen timeout